Funciones de administración de colecciones collection-management-functions

El lenguaje de expresión también introduce un conjunto de funciones para consultar colecciones.

Estas funciones se explican a continuación. En los ejemplos siguientes, vamos a utilizar la carga útil de evento que contiene una colección:

                {
   "_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 función "all(<condition>)"

El all Esta función habilita la definición de un filtro en una colección determinada utilizando una expresión booleana.

<listExpression>.all(<condition>)

Por ejemplo, entre todos los usuarios de la aplicación, puede obtener los que usan IOS 13 (expresión booleana "app used == IOS 13"). El resultado de esta función es la lista filtrada que contiene elementos que coinciden con la expresión booleana (ejemplo: usuario de aplicación 1, usuario de aplicación 34, usuario de aplicación 432).

En una actividad de Condición de fuente de datos puede comprobar si el resultado de la all La función es nula o no. También puede combinar esto all con otras funciones como count. Para obtener más información, consulte Actividad de condición de fuente de datos.

Ejemplo 1:

Queremos comprobar si un usuario ha instalado una versión específica de una aplicación. Para esto, obtenemos todos los tokens de notificaciones push asociados con aplicaciones móviles para las que la versión es 1.0. Luego, realizamos una condición con el count para comprobar que la lista devuelta de tokens contiene al menos un elemento.

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

El resultado es true.

Ejemplo 2:

Aquí utilizamos el count para comprobar si hay tokens de notificaciones push en la colección.

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

El resultado será true.

NOTE
Cuando la condición de filtrado en all() está vacía, el filtro devolverá todos los elementos de la lista. Sin embargo, para contar el número de elementos de una colección, no es necesaria la función all.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

El resultado de la expresión es 3.

Ejemplo 3:

Aquí comprobamos si una persona no ha recibido ninguna comunicación en las últimas 24 horas. Filtramos la colección de eventos de experiencia recuperados de la fuente de datos de Experience Platform, utilizando dos expresiones basadas en dos elementos de la colección. En particular, la marca de tiempo del evento se compara con el dateTime devuelto por el nowWithDelta función.

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

El resultado es true si no hay ningún evento de experiencia que coincida con las dos condiciones.

Ejemplo 4:

Aquí deseamos comprobar si un individuo ha iniciado al menos una aplicación en los últimos 7 días, para, por ejemplo, almacenar en déclencheur una notificación push que le invite a iniciar un tutorial.

count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
NOTE
currentEventField solo está disponible al manipular colecciones de eventos y currentDataPackField
al manipular colecciones de fuentes de datos. Al procesar colecciones con all, first y last, nosotros
en cada elemento de la colección uno a uno. currentEventField y currentDataPackField
corresponde al elemento que se está reproduciendo en bucle.

Las funciones "first(<condition>)" y "last(<condition>)"

El first y last Las funciones de también habilitan la definición de un filtro en la colección y devuelven el primer/último elemento de la lista que cumple el filtro.

<listExpression>.first(<condition>)

<listExpression>.last(<condition>)

Ejemplo 1:

Esta expresión devuelve el primer token de notificación push asociado a aplicaciones móviles para las que la versión es 1.0.

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

El resultado es "token_1".

Ejemplo 2:

Esta expresión devuelve el último token de notificación push asociado a aplicaciones móviles para las que la versión es 1.0.

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

El resultado es "token_2".

NOTE
Los eventos de experiencia se recuperan de Adobe Experience Platform como una colección en orden cronológico inverso, por lo tanto:
  • first devolverá el evento más reciente.
  • last La función devolverá la más antigua.

Ejemplo 3:

Comprobamos si el primer evento de Adobe Analytics (el más reciente) con un valor distinto de cero para el ID de DMA tiene un valor igual a 602.

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

La función "at(<index>)"

El at permite hacer referencia a un elemento específico de una colección según un índice.
El índice 0 es el primer índice de la colección.

<listExpression>.at()<index>)

Ejemplo:

Esta expresión devuelve el segundo token de notificación push de la lista.

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

El resultado es "token_2".

Otros ejemplos

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