Show Menu
TÓPICOS×

Funções de gerenciamento de coleções

A linguagem de expressão também introduz um conjunto de funções às coleções de query.
Essas funções são explicadas abaixo. Nos exemplos a seguir, vamos usar a carga do evento que contém uma coleção:
                { 
   "_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"
}

A função "all( <condition> )"
A all função permite a definição de um filtro em uma determinada coleção usando uma expressão booleana.
<listExpression>.all(<condition>)

Por exemplo, entre todos os usuários do aplicativo, você pode obter os que usam o IOS 13 (expressão booleana "app used == IOS 13"). O resultado dessa função é a lista filtrada que contém itens correspondentes à expressão booleana (por exemplo: usuário do aplicativo 1, usuário do aplicativo 34, usuário do aplicativo 432).
Em uma atividade de condição da fonte de dados, é possível verificar se o resultado da all função é nulo ou não. Também é possível combinar essa all função com outras funções, como count . Para obter mais informações, consulte atividade Condição da Fonte de Dados.
Exemplo 1:
Queremos verificar se um usuário instalou uma versão específica de um aplicativo. Para isso, obtemos todos os tokens de notificação por push associados a aplicativos móveis para os quais a versão é 1.0. Em seguida, executamos uma condição com a count função para verificar se a lista de tokens retornada contém pelo menos um elemento.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0

O resultado é verdade.
Exemplo 2:
Aqui, usamos a count função para verificar se há tokens de notificação por push na coleção.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

O resultado será verdade.
Quando a condição de filtragem na função all() estiver vazia, o filtro retornará todos os elementos na lista. No entanto, para contar o número de elementos de uma coleção, a função all não é necessária.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

The result of the expression is 3 .
Exemplo 3:
Aqui verificamos se um indivíduo não recebeu nenhuma comunicação nas últimas 24 horas. Filtramos a coleção de eventos de experiência recuperados da fonte de dados ExperiencePlatform, usando duas expressões baseadas em dois elementos da coleção. Em particular, o carimbo de data e hora do evento é comparado ao dateTime retornado pela nowWithDelta função.
count(#{ExperiencePlatform.MarltonExperience.experienceevent.all(
   currentDataPackField.directMarketing.sends.value > 0 and
   currentDataPackField.timestamp > nowWithDelta(-1, "days")).timestamp}) == 0

O resultado será verdadeiro se não houver um evento de experiência que corresponda às duas condições.
Exemplo 4:
Aqui, queremos verificar se um indivíduo iniciou pelo menos uma vez um aplicativo nos últimos 7 dias, para, por exemplo, disparar uma notificação por push convidando-o a start de um tutorial.
count(
 #{ExperiencePlatform.AnalyticsData.experienceevent.all(
 nowWithDelta(-7,"days") <= currentDataPackField.timestamp
 and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0

currentEventField só está disponível ao manipular coleções de eventos e currentDataPackField ao manipular coleções de fontes de dados. Ao processar coleções com all , first e last , nós em cada elemento da coleção, um por um. currentEventField e currentDataPackField corresponde ao elemento sendo repetido.
As funções "first( <condition> )" e "last( <condition> )"
As funções first e last também permitem a definição de um filtro na coleção enquanto retornam o primeiro/último elemento da lista que atende ao filtro.
<listExpression>.first(<condition>)
<listExpression>.last(<condition>)
Exemplo 1:
Essa expressão retorna o primeiro token de notificação por push associado a aplicativos móveis cuja versão é 1.0.
@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.first(currentEventField.application.version == "1.0").token

O resultado é "token_1".
Exemplo 2:
Essa expressão retorna o último token de notificação por push associado a aplicativos móveis cuja versão é 1.0.
@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last&#8203;(currentEventField.application.version == "1.0").token}

O resultado é "token_2".
Os eventos de experiência são recuperados do Adobe Experience Platform como uma coleção em ordem cronológica inversa, portanto:
  • first retornará o evento mais recente
  • last retornará a mais antiga.
Exemplo 3:
Verificamos se o primeiro evento Adobe Analytics (mais recente) com um valor diferente de zero para ID DMA tem um valor igual a 602.
#{ExperiencePlatform.AnalyticsProd_EvarsProps.experienceevent.first(
currentDataPackField.placeContext.geo.dmaID > 0).placeContext.geo.dmaID} == 602

A função "at( <index> )"
A at função permite referenciar um elemento específico em uma coleção de acordo com um índice. O índice 0 é o primeiro índice da coleção.
<listExpression> .at( <index> )
Exemplo:
Essa expressão retorna o segundo token de notificação por push da lista.
@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.at(1).token}

O resultado é "token_2".