Funções de gerenciamento de coleções collection-management-functions

Sobre funções de coleção de consulta

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, usamos um evento chamado “LobbyBeacon” que contém uma coleção de tokens de notificação por push. Os exemplos nesta página usam a estrutura de payload do evento mostrada abaixo:

                {
   "_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"
}
NOTE
Nos exemplos abaixo, essa carga é referenciada usando @event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens}, onde "LobbyBeacon" é o nome do evento e o restante do caminho corresponde à estrutura mostrada acima.

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 booliana.

<listExpression>.all(<condition>)

Exemplo conceitual: 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.

Exemplos de código usando a carga LobbyBeacon:

Os exemplos abaixo usam a carga do evento mostrada na parte superior desta página.

CAUTION
Não há suporte para o uso de eventos de experiência em expressões/condições de jornada. Se o seu caso de uso exigir o uso de eventos de experiência, considere métodos alternativos. Saiba mais

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(@event{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(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all().token}) > 0

O resultado é true.

count(@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.token})

O resultado da expressão é 3.

NOTE
  • Quando a condição de filtragem na função all() estiver vazia, o filtro retornará todos os elementos da lista. No entanto, para contar o número de elementos de uma coleção, a função all não é necessária.

  • currentEventField está disponível somente ao manipular coleções de eventos, currentDataPackField ao manipular coleções de fonte de dados e currentActionField ao manipular coleções de resposta de ação personalizada.

Ao processar coleções com all, first e last, repetimos cada elemento da coleção um por um. currentEventField, currentDataPackField e currentActionField correspondem 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.

@event{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.

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

O resultado é token_2.

A função at(<index>)

A função às permite fazer referência a 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.

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

O resultado é token_2.

Referência de conhecimento de IA

Esta seção contém conhecimento estruturado destinado a oferecer suporte à interpretação, recuperação e resposta a perguntas relacionadas a este tópico.

Para uma compreensão completa, essas informações devem ser combinadas com a documentação desta página. Nenhuma das origens deve ser independente; a página descreve o recurso, enquanto esta seção fornece um contexto adicional que ajuda a desfazer a ambiguidade da terminologia, intenção, aplicabilidade e restrições.

  • TL;DR: esta página documenta as funções de gerenciamento de coleções all(), first(), last() e at() usadas no editor de expressão avançado de Jornada, ilustradas com exemplos de carga de token de notificação por push.

Intenções:

  • Filtrar uma coleção de campos de evento ou fonte de dados usando uma condição booleana com all(<condition>)
  • Contar elementos de coleção filtrados ou não filtrados usando count() combinado com funções de coleção
  • Recuperar o primeiro ou o último elemento correspondente de uma coleção usando first() ou last()
  • Acessar um elemento de coleção em um índice baseado em zero específico usando at(<index>)
  • Entenda qual variável de loop (currentEventField, currentDataPackField, currentActionField) se aplica a cada contexto de coleção

Glossário:

  • all(condition): filtra uma coleção e retorna todos os itens correspondentes à expressão booliana especificada (específico do produto)
  • first(condition): retorna o primeiro elemento (mais recente para eventos de experiência) em uma coleção que corresponde à condição (específico do produto)
  • last(condition): retorna o último elemento (mais antigo para eventos de experiência) em uma coleção que corresponde à condição (específico do produto)
  • at(index): retorna o elemento no índice com base em zero especificado de uma coleção (específica do produto)
  • currentEventField: Variável de loop disponível somente ao iterar em coleções de eventos (específico do produto)
  • currentDataPackField: variável de loop disponível somente ao iterar em coleções de fonte de dados (específico do produto)
  • currentActionField: variável de loop disponível somente ao iterar sobre coleções de resposta de ação personalizada (específico do produto)

Medidas de Proteção:

  • Não há suporte para o uso de eventos de experiência em expressões/condições de jornada; considere métodos alternativos, como atributos computados
  • currentEventField, currentDataPackField e currentActionField só estão disponíveis nos respectivos contextos de coleção
  • A função all não é necessária para contar elementos de coleção — count() pode ser aplicada diretamente ao caminho do campo
  • Quando all() é chamado com uma condição vazia, todos os elementos na coleção são retornados

Terminologia:

  • Nome canônico: Funções de Gerenciamento de Coleta — Acrônimo: nenhum — variantes: funções de coleta, funções de coleta de consulta
  • Sinônimos: “all()” = “função de filtro de coleção”; “at()” = “acessador de índice”
  • Não confunda: first() (evento de experiência mais recente) ≠ primeiro elemento inserido em listas gerais

Perguntas frequentes:

  • P: Qual é a diferença entre all() com uma condição vazia e all() com uma condição? — Um all() vazio retorna cada elemento; um all() baseado em condição retorna somente elementos correspondentes a essa expressão booleana.
  • P: Como posso contar tokens de notificação por push sem usar all()? — Chame count() diretamente no caminho do campo de token, por exemplo, count(@event{LobbyBeacon...pushNotificationTokens.token}).
  • P: Qual variável devo usar para fazer referência ao elemento atual durante o loop em uma coleção de fontes de dados? — Use currentDataPackField dentro de all(), first() ou last() em coleções de fonte de dados.
  • P: Como faço para obter o segundo item em uma coleção? — Use at(1) porque o índice 0 é o primeiro elemento.
  • P: Por que last() retorna o evento de experiência mais antigo? — Os eventos de experiência são armazenados em ordem cronológica inversa, de modo que a última posição na coleção corresponde ao evento mais antigo.
recommendation-more-help
journey-optimizer-help