Funktioner för att hantera samlingar :headding-anchor: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(@{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(@{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(@{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 och currentDataPackField
när du hanterar datakällsamlingar. När vi bearbetar samlingar med all, first och last
slinga för varje element i samlingen ett i taget. currentEventField och currentDataPackField
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.

@{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.

@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last&#8203;(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.

@{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
4f4a00c1-77c9-4eee-84df-bbe6206c3ab9