Funções de gerenciamento de coleções collection-management-functions
A linguagem de expressão também introduz um conjunto de funções para consultar coleções.
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 função all habilita 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 usuários usando 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 (exemplo: usuário do aplicativo 1, usuário do aplicativo 34, usuário do aplicativo 432).
Em uma atividade Data Source Condition, você pode verificar se o resultado da função all é nulo ou não. Você também pode combinar essa função all com outras funções, como count. Para obter mais informações, consulte Atividade de Condição Data Source.
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 função count para verificar se a lista retornada de tokens contém pelo menos um elemento.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all(currentEventField.application.version == "1.0").token}) > 0
O resultado é true.
Exemplo 2:
Aqui usamos a função count 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á true.
count(@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})
O resultado da expressão é 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 com base em dois elementos da coleção. Especificamente, o carimbo de data e hora do evento é comparado ao dateTime retornado pela função nowWithDelta.
count(#{ExperiencePlatform.MarltonExperience.experienceevent.all(
currentDataPackField.directMarketing.sends.value > 0 and
currentDataPackField.timestamp > nowWithDelta(-1, "days")).timestamp}) == 0
O resultado será true se não houver evento de experiência correspondente às duas condições.
Exemplo 4:
Aqui, queremos verificar se um indivíduo foi iniciado pelo menos uma vez em um aplicativo nos últimos 7 dias, para acionar uma notificação por push convidando-o a iniciar um tutorial.
count(
#{ExperiencePlatform.AnalyticsData.experienceevent.all(
nowWithDelta(-7,"days") <= currentDataPackField.timestamp
and currentDataPackField.application.firstLaunches.value > 0
)._id}) > 0
ao manipular coleções de fonte de dados. Ao processar coleções com all, first e last,
executar um loop em cada elemento da coleção, um por um. currentEventField e currentDataPackField
corresponde ao elemento que está sendo repetido.
As funções "first(<condition>
)" e "last(<condition>
)"
As funções first e last também habilitam a definição de um filtro na coleção ao retornar 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 aos aplicativos móveis para os quais a 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 aos aplicativos móveis para os quais a versão é 1.0.
@{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.last​(currentEventField.application.version == "1.0").token}
O resultado é "token_2".
- A função first retornará o evento mais recente
- A função last retornará a mais antiga.
Exemplo 3:
Verificamos se o primeiro evento (mais recente) do Adobe Analytics com um valor diferente de zero para a ID de 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 função at 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>
.às(<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".
Outros exemplos
#{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}