コレクション管理関数

また、式言語では、クエリコレクションに一連の関数が導入されます。

これらの機能については、以下に説明します。 次の例では、コレクションを含むイベントペイロードを使用します。

                { 
   "_experience":{ 
      "campaign":{ 
         "message":{ 
            "profile":{ 
               "pushNotificationTokens":[ 
                  { 
                     "token":"token_1",
                     "application":{ 
                        "_id":"APP1",
                        "name":"MarltonMobileApp",
                        "version":"1.0"
                     }
                  },
                  { 
                     "token":"token_2",
                     "application":{ 
                        "_id":"APP2",
                        "name":"MarketplaceApp",
                        "version":"1.0"
                     }
                  },
                  { 
                     "token":"token_3",
                     "application":{ 
                        "_id":"APP3",
                        "name":"VendorApp",
                        "version":"2.0"
                     }
                  }
               ]
            }
         }
      }
   },
   "timestamp":"1536160728"
}

関数"all(<condition>)"

all​関数は、ブール式を使用して、特定のコレクションに対するフィルターの定義を有効にします。

<listExpression>.all(<condition>)

例えば、すべてのアプリユーザーの中で、IOS 13を使用するユーザーを取得できます(ブール式「app used == IOS 13」)。 この関数の結果は、ブール値の式に一致する項目を含むフィルターされたリストになります(例:アプリユーザー1、アプリユーザー34、アプリユーザー432)。

Data Source Conditionアクティビティーでは、all​関数の結果がnullか否かを確認できます。 また、この​すべての​関数を、count​などの他の関数と組み合わせることもできます。 詳しくは、データソース条件のアクティビティを参照してください。

例 1:

ユーザーが特定のバージョンのアプリケーションをインストールしたかどうかを確認します。 この場合、バージョンが1.0のモバイルアプリケーションに関連付けられたすべてのプッシュ通知トークンを取得します。次に、count​関数を使用して条件を実行し、返されたリストーに少なくとも1つの要素が含まれているかどうかを確認します。

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0

結果はtrueです。

例 2:

ここでは、count​関数を使用して、コレクションにプッシュ通知トークンがあるかどうかを確認します。

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

結果はtrueになります。

メモ

all()​関数のフィルター条件が空の場合、フィルターはリスト内のすべての要素を返します。 ただし、コレクションの要素数をカウントする場合は、all関数は不要です。

count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

式の結果は​3​です。

例3:

ここでは、個人が過去24時間以内に連絡を受けていないかどうかを調べます。 ExperiencePlatformデータソースから取得したエクスペリエンスイベントのコレクションをフィルターし、コレクションの2つの式に基づく2つの要素を使用します。 特に、イベントのタイムスタンプは、nowWithDelta​関数から返されるdateTimeと比較されます。

count(#{ExperiencePlatform.MarltonExperience.experienceevent.all(
   currentDataPackField.directMarketing.sends.value > 0 and
   currentDataPackField.timestamp > nowWithDelta(-1, "days")).timestamp}) == 0

2つの条件に一致するエクスペリエンスイベントがない場合、結果はtrueになります。

例4:

ここでは、個人が過去7日間に少なくとも1回アプリケーションを起動したかどうかを確認します。例えば、チュートリアルの開始に招待するプッシュ通知をトリガーするためです。

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
メモ

currentEventFieldsは、イベントコレクションとcurrentDataPackFieldを操作する場合にの み使用で きます
データソースコレクションを操作する場合。 すべての最初の​と​最後の​を含むコレクションを処理する場合、
コレクションの各要素を1つずつループします。 ​currentEventFieldおよび currentDataPackField
は、ループされる要素に対応します。

関数"first(<condition>)"と"last(<condition>)"

first​関数と​last​関数を使用すると、コレクションのフィルターを定義できます。一方、フィルターを満たすリストの最初と最後の要素が返されます。

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

例 1:

この式は、バージョン1.0のモバイルアプリケーションに関連付けられている最初のプッシュ通知トークンを返します。

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token

結果は「token_1」になります。

例 2:

この式は、バージョン1.0のモバイルアプリケーションに関連付けられている最後のプッシュ通知トークンを返します。

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last&#8203;(currentEventField.application.version == "1.0").token}

結果は「token_2」です。

メモ

エクスペリエンスイベントは、暦の逆順にコレクションとしてAdobe Experience Platformから取得されます。したがって、次のようになります。

  • 初の関数は最新イベントを返す
  • last 関数は最も古い関数を返します。

例3:

DMA IDにゼロ以外の値を持つ最初の(最新の)Adobe Analyticsイベントの値が602に等しいかどうかを調べます。

#{ExperiencePlatform.AnalyticsProd_EvarsProps.experienceevent.first(
currentDataPackField.placeContext.geo.dmaID > 0).placeContext.geo.dmaID} == 602

関数「at(<index>)」

at​関数を使用すると、インデックスに従ってコレクション内の特定の要素を参照できます。
インデックス0は、コレクションの最初のインデックスです。

<listExpression>.at(<index>)

例:

この式は、リストの2番目のプッシュ通知トークンを返します。

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}

結果は「token_2」です。

このページ

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now