Show Menu
TEMAS×

Funciones de administración de colecciones

El lenguaje de expresión también introduce un conjunto de funciones en las colecciones de consultas.
Estas funciones se explican a continuación. En los ejemplos siguientes, usemos 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> )"
La all función habilita la definición de un filtro en una colección determinada mediante una expresión booleana.
<listExpression>.all(<condition>)

Por ejemplo, entre todos los usuarios de la aplicación, puede obtener los que utilizan 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 1 de la aplicación, usuario 34 de la aplicación, usuario 432 de la aplicación).
En una actividad Condición de fuente de datos puede comprobar si el resultado de la all función es nulo o no. También puede combinar esta all función con otras funciones como count . Para obtener más información, consulte actividad de la 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 a las aplicaciones móviles para las que la versión es 1.0. A continuación, realizamos una condición con la count función 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 la count función para comprobar si hay tokens de notificación push en la colección.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

El resultado será verdadero.
Cuando la condición de filtrado de la función 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 se requiere la función all.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

The result of the expression is 3 .
Ejemplo 3:
Aquí comprobamos si una persona no ha recibido ninguna comunicación en las últimas 24 horas. Se filtra la colección de eventos de experiencia recuperados del origen de datos de ExperiencePlatform mediante dos expresiones basadas en dos elementos de la colección. En particular, la marca de tiempo del evento se compara con la fecha y hora devuelta por la nowWithDelta función.
count(#{ExperiencePlatform.MarltonExperience.experienceevent.all(
   currentDataPackField.directMarketing.sends.value > 0 and
   currentDataPackField.timestamp > nowWithDelta(-1, "days")).timestamp}) == 0

El resultado será true si no hay ningún evento de experiencia que coincida con las dos condiciones.
Ejemplo 4:
Aquí queremos comprobar si una persona ha iniciado al menos una aplicación en los últimos 7 días, para, por ejemplo, activar una notificación push invitándole a inicio un tutorial.
count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0

currentEventField solo está disponible cuando se manipulan colecciones de eventos y currentDataPackField al manipular colecciones de fuentes de datos. Al procesar colecciones con all , first y last , en cada elemento de la colección uno por uno. currentEventField y currentDataPackField corresponde al elemento que se está buceando.
Las funciones "first( <condition> )" y "last( <condition> )"
Las funciones first y last también permiten definir un filtro en la colección mientras se devuelve 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 las 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 las 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".
Los eventos de experiencia se recuperan del Adobe Experience Platform como una colección en orden cronológico inverso, por lo tanto:
  • first devolverá el evento más reciente
  • last devolverá el más antiguo.
Ejemplo 3:
Comprobamos si el primer evento (más reciente) de Adobe Analytics 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> )"
La at función 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".