Funzioni di gestione delle raccolte collection-management-functions

Il linguaggio delle espressioni introduce anche un set di funzioni per le raccolte di query.

Queste funzioni sono descritte di seguito. Negli esempi seguenti, utilizziamo il payload dell’evento contenente una raccolta:

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

La funzione "all(<condition>)"

Il tutto funzione consente di definire un filtro per una determinata raccolta utilizzando un'espressione booleana.

<listExpression>.all(<condition>)

Ad esempio, tra tutti gli utenti dell’app, puoi ottenere quelli che utilizzano IOS 13 (espressione booleana "app utilizzata == IOS 13"). Il risultato di questa funzione è l’elenco filtrato contenente gli elementi che corrispondono all’espressione booleana (ad esempio: utente app 1, utente app 34, utente app 432).

In un’attività Data Source Condition puoi verificare se il risultato della tutto la funzione è null o no. Puoi anche combinare questo tutto con altre funzioni quali count. Per ulteriori informazioni, consulta Attività condizione origine dati.

Esempio 1:

Vogliamo verificare se un utente ha installato una versione specifica di un’applicazione. Per questo otteniamo tutti i token di notifica push associati alle applicazioni mobili per le quali la versione è 1.0. Quindi, viene eseguita una condizione con count per verificare che l’elenco di token restituito contenga almeno un elemento.

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

Il risultato è vero.

Esempio 2:

In questo caso utilizziamo count per verificare se la raccolta contiene token di notifica push.

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

Il risultato sarà vero.

NOTE
Quando la condizione di filtro in all() è vuoto, il filtro restituirà tutti gli elementi nell’elenco. Tuttavia, per contare il numero di elementi di una raccolta, non è necessaria la funzione all.
count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

Il risultato dell’espressione è 3.

Esempio 3:

Qui controlliamo se un individuo non ha ricevuto alcuna comunicazione nelle ultime 24 ore. La raccolta di eventi di esperienza recuperata dall’origine dati di Experience Platform viene filtrata utilizzando due espressioni basate su due elementi della raccolta. In particolare, la marca temporale dell’evento viene confrontata con la data/ora restituita dal nowWithDelta funzione.

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

Il risultato sarà vero se non c’è un evento esperienza che corrisponde alle due condizioni.

Esempio 4:

Qui vogliamo verificare se un singolo utente ha avviato un’applicazione almeno una volta negli ultimi 7 giorni, ad esempio per attivare una notifica push che invita l’utente ad avviare un’esercitazione.

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
NOTE
currentEventField è disponibile solo quando si manipolano le raccolte di eventi, currentDataPackField durante la manipolazione delle raccolte di origini dati e currentActionField quando si manipolano raccolte di risposte di azioni personalizzate.
Durante l’elaborazione delle raccolte con tutto, primo e ultimo, eseguiamo un ciclo su ogni elemento della raccolta uno alla volta. currentEventField, currentDataPackField e currentActionField corrisponde all'elemento di cui viene eseguito il ciclo.

Le funzioni "first(<condition>)" e "last(<condition>)"

Il primo e ultimo Le funzioni consentono inoltre di definire un filtro per la raccolta restituendo il primo/ultimo elemento dell'elenco che soddisfa il filtro.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Esempio 1:

Questa espressione restituisce il primo token di notifica push associato alle applicazioni mobili la cui versione è 1.0.

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

Il risultato è "token_1".

Esempio 2:

Questa espressione restituisce l’ultimo token di notifica push associato alle applicazioni mobili la cui versione è 1.0.

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

Il risultato è "token_2".

NOTE
Gli eventi esperienza vengono recuperati da Adobe Experience Platform come raccolta in ordine cronologico inverso, quindi:
  • primo restituirà l’evento più recente
  • ultimo restituirà quella più vecchia.

Esempio 3:

Verifichiamo se il primo evento Adobe Analytics (più recente) con un valore diverso da zero per l’ID DMA ha un valore uguale a 602.

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

La funzione "at(<index>)"

Il a funzione consente di fare riferimento a un elemento specifico di una raccolta in base a un indice.
L'indice 0 è il primo indice della raccolta.

<listExpression>.at(<index>)

Esempio:

Questa espressione restituisce il secondo token di notifica push dell’elenco.

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

Il risultato è "token_2".

Altri esempi

#{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