Funktioner för att hantera samlingar collection-management-functions

Uttrycksspråket innehåller även en uppsättning funktioner för att fråga efter samlingar.

Dessa funktioner förklaras nedan. I följande exempel använder vi händelsenyttolasten som innehåller en samling:

                {
   "_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"
}

Funktionen "all(<condition>)"

Funktionen all aktiverar definitionen av ett filter för en given samling genom att använda ett booleskt uttryck.

<listExpression>.all(<condition>)

Bland alla appanvändare kan du till exempel hämta de som använder IOS 13 (booleskt uttryck "app used == IOS 13"). Resultatet av den här funktionen är den filtrerade lista som innehåller objekt som matchar det booleska uttrycket (exempel: appanvändare 1, appanvändare 34, appanvändare 432).

I en Data Source Condition-aktivitet kan du kontrollera om resultatet av all-funktionen är null eller inte. Du kan också kombinera den här all-funktionen med andra funktioner som count. Mer information finns i Datavillkorsaktivitet för Source.

Exempel 1:

Vi vill kontrollera om en användare har installerat en specifik version av ett program. För detta får vi alla push-meddelandetoken som är associerade med mobilprogram som har version 1.0. Sedan utför vi ett villkor med funktionen count för att kontrollera att den returnerade tokenlistan innehåller minst ett element.

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

Resultatet är sant.

Exempel 2:

Här använder vi funktionen count för att kontrollera om det finns push-meddelandetoken i samlingen.

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

Resultatet blir sant.

NOTE
När filtervillkoret i funktionen all() är tomt returnerar filtret alla element i listan. För att antalet element i en samling ska kunna räknas krävs dock inte funktionen all.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

Resultatet av uttrycket är 3.

Exempel 3:

Här kontrollerar vi om en individ inte har fått någon information inom de senaste 24 timmarna. Vi filtrerar samlingen av upplevelsehändelser som hämtats från ExperiencePlatform-datakällan med två uttryck som baseras på två element i samlingen. Händelsens tidsstämpel jämförs med den dateTime som returneras av funktionen nowWithDelta.

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

Resultatet blir true om det inte finns någon upplevelsehändelse som matchar de två villkoren.

Exempel 4:

Här ska vi kontrollera om en individ har startat minst en gång ett program de senaste 7 dagarna, till exempel för att utlösa ett push-meddelande som bjuder in honom/henne att starta en självstudiekurs.

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
NOTE
currentEventField är bara tillgängligt när du hanterar händelsesamlingar, currentDataPackField när du ändrar datakällsamlingar och currentActionField när du ändrar anpassade åtgärdssvarssamlingar.
När vi bearbetar samlingar med all, first och last slingor för varje element i samlingen ett i taget. currentEventField, currentDataPackField och currentActionField motsvarar elementet som repeteras.

Funktionerna "first(<condition>)" och "last(<condition>)"

Funktionerna first och last aktiverar även definitionen av ett filter i samlingen när det första/sista elementet i listan som uppfyller filtret returneras.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Exempel 1:

Det här uttrycket returnerar den första push-meddelandetoken som är associerad med mobilprogram som versionen är 1.0 för.

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

Resultatet är "token_1".

Exempel 2:

Det här uttrycket returnerar den senaste push-meddelandetoken som är associerad med mobilprogram för vilka versionen är 1.0.

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

Resultatet är "token_2".

NOTE
Experience Events hämtas från Adobe Experience Platform som en samling i omvänd kronologisk ordning, vilket innebär att
  • Funktionen first returnerar den senaste händelsen
  • Funktionen last returnerar den äldsta.

Exempel 3:

Vi kontrollerar om den första (senaste) Adobe Analytics-händelsen med ett värde som inte är noll för DMA ID har ett värde som är lika med 602.

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

Funktionen "at(<index>)"

Med funktionen at kan du referera till ett specifikt element i en samling enligt ett index.
Index 0 är samlingens första index.

<listExpression>.at(<index>)

Exempel:

Det här uttrycket returnerar listans andra push-meddelandetoken.

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

Resultatet är "token_2".

Andra exempel

#{ExperiencePlatform.ExperienceEventFieldGroup.experienceevent. all(currentDataPackField._aepgdcdevenablement2.purchase_event.receipt_nbr == "10-337-4016").
_aepgdcdevenablement2.purchase_event.productListItems. all(currentDataPackField.SKU == "AB17 1234 1775 19DT B4DR 8HDK 762").name}
 #{ExperiencePlatform.ExperienceEventFieldGroup.experienceevent.last(
currentDataPackField.eventType == "commerce.productListAdds").productListItems.last(currentDataPackField.priceTotal >= 150).name}
recommendation-more-help
b22c9c5d-9208-48f4-b874-1cefb8df4d76