Show Menu
トピック×

コレクション管理関数

また、式言語では、クエリコレクションに一連の関数が導入されます。
これらの機能については、以下に説明します。 次の例では、コレクションを含むイベントペイロードを使用します。
                { 
   "_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

currentEventField は、イベントコレクションと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から暦の逆順にコレクションとして取得されます。したがって、次のようになります。
  • first 関数は最新イベントを返します
  • last 関数は、最も古い関数を返します。
例 3:
DMA IDにゼロ以外の値を持つ最初の(最新の)AdobeAnalyticsイベントの値が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」です。