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.
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
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​(currentEventField.application.version == "1.0").token}
Resultatet är "token_2".
- 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}