收集管理函式

運算式語言也提供一組函式來查詢系列。

以下說明這些函式。 在下列範例中,讓我們使用包含系列的事件裝載:

                { 
   "_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")。 此函式的結果是包含與布爾表達式匹配的項目的篩選清單(例如:app user 1、app user 34、app user 432)。

在「資料源條件」活動中,您可以檢查​all​函式的結果是否為空。 您也可以將此​all​函式與其他函式(例如​count)結合。 如需詳細資訊,請參閱資料來源條件活動

範例1:

我們想檢查使用者是否已安裝特定版本的應用程式。 為此,我們會取得與版本為1.0的行動應用程式相關的所有推播通知Token。然後,我們使用​count​函式執行條件,以檢查傳回的Token清單是否包含至少一個元素。

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

結果是正確的。

範例2:

在這裡,我們使用​count​函式來檢查系列中是否有推播通知Token。

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

結果是正確的。

注意

當​all()​函式中的篩選條件為空時,篩選器將返回清單中的所有元素。 不過,為了計算系列的元素數目,並不需要所有函式。

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

表達式的結果為​3

範例3:

在此,我們會檢查過去24小時內是否有個人收到任何通訊。 我們會使用兩個基於系列兩個元素的運算式,來篩選從ExperiencePlatform資料來源擷取的體驗事件集合。 尤其是,事件的時間戳記會與​nowWithDelta​函式傳回的dateTime進行比較。

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

如果沒有與兩個條件相符的體驗事件,則結果為true。

範例4:

在這裡,我們想檢查個人在過去7天中是否至少啟動過一次應用程式,例如觸發推播通知,邀請他開始教學課程。

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

currentEventField 僅在控制事件集合和currentDataPackField時 可用
控制資料來源集合時。 當處理具有​allfirst​和​last​的系列時,我們
逐個循環顯示系列的每個元素。 currentEventFieldcurrentDataPackField
對應於所循環的元素。

函式"first(<condition>)"和"last(<condition>)"

first​和​last​函式也可啟用系列中篩選器的定義,同時傳回符合篩選器的清單的第一個/最後一個元素。

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

範例1:

此運算式會傳回與版本為1.0的行動應用程式相關聯的第一個推播通知Token。

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

結果為"token_1"。

範例2:

此運算式會傳回與版本為1.0的行動應用程式相關聯的最後一個推播通知Token。

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

結果是"token_2"。

注意

體驗事件是從Adobe Experience Platform擷取,依時間順序排列,因此:

  • first 函式會傳回最近的事件
  • 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>)

範例:

此運算式會傳回清單的第二個推播通知Token。

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

結果是"token_2"。

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
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