Show Menu
ARGOMENTI×

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 funzione abilita la definizione di un filtro su una determinata raccolta utilizzando un'espressione booleana.
<listExpression>.all(<condition>)

Ad esempio, tra tutti gli utenti dell'app, potete ottenere quelli che utilizzano IOS 13 (espressione booleana "app utilizzata == IOS 13"). Il risultato di questa funzione è l'elenco filtrato contenente elementi corrispondenti all'espressione booleana (esempio: app user 1, app user 34, app user 432).
In un'attività Condizione origine dati è possibile verificare se il risultato della all funzione è nullo o meno. È inoltre possibile combinare questa all funzione con altre funzioni, ad esempio 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, tutti i token di notifica push vengono associati alle applicazioni mobili la cui versione è 1.0. Quindi, viene eseguita una condizione con la count funzione 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:
In questa sezione utilizziamo la count funzione per verificare se nella raccolta sono presenti token di notifica push.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

Il risultato sarà vero.
Quando la condizione di filtro nella funzione all() è vuota, il filtro restituirà tutti gli elementi nell'elenco. Tuttavia, per conteggiare il numero di elementi di una raccolta, la funzione all non è obbligatoria.
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 esperienza recuperati dall'origine dati ExperiencePlatform 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 esperienza che corrisponda alle due condizioni.
Esempio 4:
Qui si desidera verificare se un individuo ha avviato almeno una volta un'applicazione negli ultimi 7 giorni, ad esempio per attivare una notifica push invitandolo ad avviare un'esercitazione.
count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0

currentEventField è disponibile solo quando si modificano le raccolte di eventi e currentDataPackField durante la manipolazione delle raccolte di origini dati. Durante l'elaborazione delle raccolte con all , first e last su ciascun elemento della raccolta, uno per uno. currentEventField e currentDataPackField corrisponde all’elemento a cui viene ripetuto il ciclo.
Le funzioni "first( <condition> )" e "last( <condition> )"
Le funzioni first e last consentono inoltre la definizione di un filtro nella raccolta restituendo il primo o l'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".
Gli eventi esperienza vengono recuperati dall'Adobe Experience Platform come raccolta in ordine cronologico inverso, di conseguenza:
  • first restituirà l'evento più recente
  • last restituirà la funzione meno recente.
Esempio 3:
Verifichiamo che il primo (più recente) evento Adobe Analytics con un valore diverso da zero per l'ID DMA abbia 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 funzione 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".