Funzioni di gestione delle raccolte

Il linguaggio di espressione introduce anche un set di funzioni per eseguire query sulle raccolte.

Queste funzioni sono spiegate 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>)"

La all attiva la definizione di 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 used == IOS 13"). Il risultato di questa funzione è l’elenco filtrato contenente elementi che corrispondono all’espressione booleana (esempio: utente app 1, utente app 34, utente app 432).

In un’attività Condizione origine dati puoi verificare se il risultato di all la funzione è null o meno. Puoi anche combinarlo all funzioni 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. A questo scopo, otteniamo tutti i token di notifica push associati alle applicazioni mobili per le quali la versione è 1.0. Eseguiamo quindi una condizione con la count per verificare che l’elenco restituito di token contenga almeno un elemento.

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

Il risultato è vero.

Esempio 2:

Qui usiamo il count per verificare se nell'insieme sono presenti token di notifica push.

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

Il risultato sarà vero.

NOTA

Quando la condizione di filtro in all() La funzione è vuota, il filtro restituirà tutti gli elementi dell’elenco. Tuttavia, per contare il numero di elementi di una raccolta, la funzione all non è necessaria.

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

Il risultato dell'espressione è 3.

Esempio 3:

Qui verifichiamo se un individuo non ha ricevuto alcuna comunicazione entro le ultime 24 ore. Filtriamo la raccolta di eventi di esperienza recuperati dall’origine dati Experience Platform, utilizzando due espressioni basate su due elementi della raccolta. In particolare, la marca temporale dell’evento viene confrontata con la dataTime restituita dalla 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 esiste un evento di esperienza che corrisponda alle due condizioni.

Esempio 4:

Qui vogliamo verificare se una persona ha avviato almeno una volta un’applicazione negli ultimi 7 giorni, per esempio per attivare una notifica push invitandola ad avviare un’esercitazione.

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

currentEventField è disponibile solo durante la manipolazione delle raccolte di eventi e currentDataPackField
durante la manipolazione delle raccolte di origini dati. Durante l’elaborazione delle raccolte con all, first e last,
su ogni elemento della raccolta, uno per uno. currentEventField e currentDataPackField
corrispondono all’elemento a cui si sta ripetendo il ciclo.

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

La first e last 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.

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

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

Il risultato è "token_2".

NOTA

Gli eventi di esperienza vengono recuperati da Adobe Experience Platform come raccolta in ordine cronologico inverso, quindi :

  • first restituirà l’evento più recente
  • last restituirà quello più vecchio.

Esempio 3:

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

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

La funzione "at(<index>)"

La at consente di fare riferimento a un elemento specifico in 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.

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

In questa pagina