Avaliar eventos em tempo quase real com a segmentação de transmissão

NOTE
O documento a seguir declara como usar a segmentação por transmissão usando a API. Para obter informações sobre como usar a segmentação por transmissão usando a interface do, leia o guia da interface de segmentação por transmissão.

Segmentação de transmissão ativada Adobe Experience Platform O permite que os clientes façam a segmentação em tempo quase real, concentrando-se na riqueza de dados. Com a segmentação por transmissão, a qualificação de segmentos agora acontece à medida que os dados de transmissão chegam ao Platform, reduzindo a necessidade de agendar e executar trabalhos de segmentação. Com esse recurso, a maioria das regras de segmento agora pode ser avaliada à medida que os dados são passados para Platform, o que significa que a associação do segmento será mantida atualizada sem executar trabalhos de segmentação programados.

NOTE
A segmentação de streaming funciona em todos os dados que foram assimilados usando uma fonte de streaming. Os segmentos assimilados usando uma origem em lote serão avaliados à noite, mesmo que se qualifiquem para segmentação por transmissão.
Além disso, as definições de segmento avaliadas com a segmentação por transmissão podem variar entre a associação ideal e real se a definição do segmento se basear em outra definição de segmento que é avaliada usando a segmentação em lote. Por exemplo, se o Segmento A se basear no Segmento B, e o Segmento B for avaliado usando a segmentação em lote, já que o Segmento B é atualizado apenas a cada 24 horas, o Segmento A se afastará dos dados reais até ressincronizar com a atualização do Segmento B.

Introdução

Este guia do desenvolvedor requer uma compreensão funcional dos vários Adobe Experience Platform serviços envolvidos com a segmentação por transmissão. Antes de iniciar este tutorial, revise a documentação dos seguintes serviços:

  • Real-Time Customer Profile: fornece um perfil de consumidor unificado em tempo real, com base em dados agregados de várias fontes.
  • Segmentation: oferece a capacidade de criar públicos-alvo usando definições de segmento e outras fontes externas da Real-Time Customer Profile dados.
  • Experience Data Model (XDM): o quadro normalizado pelo qual Platform organiza os dados de experiência do cliente.

As seções a seguir fornecem informações adicionais que você precisará saber para fazer chamadas com êxito para o Platform APIs.

Leitura de chamadas de API de amostra

Este guia do desenvolvedor fornece exemplos de chamadas de API para demonstrar como formatar suas solicitações. Isso inclui caminhos, cabeçalhos necessários e conteúdos de solicitação formatados corretamente. Também fornece exemplos de JSON retornado nas respostas da API. Para obter informações sobre as convenções usadas na documentação para chamadas de API de exemplo, consulte a seção sobre como ler chamadas de API de exemplo no Experience Platform guia de solução de problemas.

Coletar valores para cabeçalhos necessários

Para fazer chamadas para Platform APIs, primeiro conclua o tutorial de autenticação. Concluir o tutorial de autenticação fornece os valores para cada um dos cabeçalhos necessários em todas as chamadas de API da Experience Platform, conforme mostrado abaixo:

  • Autorização: Portador {ACCESS_TOKEN}
  • x-api-key: {API_KEY}
  • x-gw-ims-org-id: {ORG_ID}

Todos os recursos em Experience Platform são isolados em sandboxes virtuais específicas. Todas as solicitações para Platform As APIs exigem um cabeçalho que especifique o nome da sandbox em que a operação ocorrerá:

  • x-sandbox-name: {SANDBOX_NAME}
NOTE
Para obter mais informações sobre sandboxes no Platform, consulte o documentação de visão geral da sandbox.

Todas as solicitações que contêm um conteúdo (POST, PUT, PATCH) exigem um cabeçalho adicional:

  • Tipo de conteúdo: application/json

Cabeçalhos adicionais podem ser necessários para concluir solicitações específicas. Os cabeçalhos corretos são mostrados em cada um dos exemplos deste documento. Preste atenção especial às solicitações de amostra para garantir que todos os cabeçalhos necessários sejam incluídos.

Tipos de consulta habilitados para segmentação de transmissão query-types

NOTE
Você precisará ativar a segmentação programada para a organização para que a segmentação por transmissão funcione. Informações sobre como ativar a segmentação agendada podem ser encontradas no ativar seção de segmentação programada

Para que uma definição de segmento seja avaliada usando a segmentação por transmissão, o query deve estar em conformidade com as diretrizes a seguir.

Tipo de consulta
Detalhes
Evento único
Qualquer definição de segmento que se refere a um único evento recebido sem restrição de tempo.
Evento único em uma janela de tempo relativa
Qualquer definição de segmento que se refere a um único evento de entrada.
Evento único com uma janela de tempo
Qualquer definição de segmento que se refere a um único evento recebido com uma janela de tempo.
Somente perfil
Qualquer definição de segmento que se refere apenas a um atributo de perfil.
Evento único com um atributo de perfil em uma janela de tempo relativa de menos de 24 horas
Qualquer definição de segmento que se refere a um único evento recebido, com um ou mais atributos de perfil, e ocorre em uma janela de tempo relativa de menos de 24 horas.
Segmento de segmentos
Qualquer definição de segmento que contenha um ou mais segmentos em lote ou de fluxo. Nota: Se um segmento de segmentos for usado, ocorrerá a desqualificação do perfil a cada 24 horas.
Vários eventos com um atributo de perfil
Qualquer definição de segmento que se refere a vários eventos nas últimas 24 horas e (opcionalmente) têm um ou mais atributos de perfil.

Uma definição de segmento não ser ativado para segmentação por transmissão nos seguintes cenários:

  • A definição do segmento inclui segmentos ou características do Adobe Audience Manager (AAM).
  • A definição do segmento inclui várias entidades (consultas de várias entidades).
  • A definição de segmento inclui uma combinação de um único evento e uma inSegment evento.
    • No entanto, se o segmento contido na variável inSegment evento é somente perfil, a definição do segmento irá ser ativado para segmentação por transmissão.
  • A definição do segmento usa "Ignorar ano" como parte de suas restrições de tempo.

Observe que as seguintes diretrizes se aplicam ao fazer a segmentação por transmissão:

Tipo de consulta
Orientação
Consulta de evento único
Não há limites para a janela de retrospectiva.
Consulta com histórico de eventos
  • A janela de pesquisa está limitada a um dia.
  • Uma condição de ordenação de tempo estrita deve existe entre os eventos.
  • Há suporte para consultas com pelo menos um evento negado. No entanto, todo o evento não é possível seja uma negação.

Se uma definição de segmento for modificada para não atender mais aos critérios de segmentação por transmissão, a definição de segmento mudará automaticamente de "Transmissão" para "Lote".

Além disso, a desqualificação de segmentos, semelhante à qualificação de segmentos, acontece em tempo real. Como resultado, se um perfil não se qualificar mais para uma definição de segmento, ele será imediatamente desqualificado. Por exemplo, se a definição do segmento solicitar "Todos os usuários que compraram sapatos vermelhos nas últimas três horas", após três horas, todos os perfis que se qualificaram inicialmente para a definição do segmento serão desqualificados.

Recuperar todas as definições de segmento habilitadas para segmentação por transmissão

É possível recuperar uma lista de todas as definições de segmento que estão habilitadas para segmentação por transmissão na organização fazendo uma solicitação GET para a /segment/definitions terminal.

Formato da API

Para recuperar definições de segmento com transmissão ativada, você deve incluir o parâmetro de consulta evaluationInfo.continuous.enabled=true no caminho da solicitação.

GET /segment/definitions?evaluationInfo.continuous.enabled=true

Solicitação

curl -X GET \
  'https://platform.adobe.io/data/core/ups/segment/definitions?evaluationInfo.continuous.enabled=true' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

Resposta

Uma resposta bem-sucedida retorna uma matriz de definições de segmento na organização que estão habilitadas para segmentação por transmissão.

{
    "segments": [
        {
            "id": "15063cb-2da8-4851-a2e2-bf59ddd2f004",
            "schema": {
                "name": "_xdm.context.profile"
            },
            "ttlInDays": 30,
            "imsOrgId": "{ORG_ID}",
            "sandbox": {
                "sandboxId": "",
                "sandboxName": "",
                "type": "production",
                "default": true
            },
            "name": " People who are NOT on their homepage ",
            "expression": {
                "type": "PQL",
                "format": "pql/text",
                "value": "select var1 from xEvent where var1._experience.analytics.endUser.firstWeb.webPageDetails.isHomePage = false"
            },
            "evaluationInfo": {
                "batch": {
                    "enabled": false
                },
                "continuous": {
                    "enabled": true
                },
                "synchronous": {
                    "enabled": false
                }
            },
            "creationTime": 1572029711000,
            "updateEpoch": 1572029712000,
            "updateTime": 1572029712000
        },
        {
            "id": "f15063cb-2da8-4851-a2e2-bf59ddd2f004",
            "schema": {
                "name": "_xdm.context.profile"
            },
            "ttlInDays": 30,
            "imsOrgId": "{ORG_ID}",
            "sandbox": {
                "sandboxId": "",
                "sandboxName": "",
                "type": "production",
                "default": true
            },
            "name": "Homepage_continuous",
            "description": "People who are on their homepage - continuous",
            "expression": {
                "type": "PQL",
                "format": "pql/text",
                "value": "select var1 from xEvent where var1._experience.analytics.endUser.firstWeb.webPageDetails.isHomePage = true"
            },
            "evaluationInfo": {
                "batch": {
                    "enabled": true
                },
                "continuous": {
                    "enabled": true
                },
                "synchronous": {
                    "enabled": false
                }
            },
            "creationTime": 1572021085000,
            "updateEpoch": 1572021086000,
            "updateTime": 1572021086000
        }
    ],
    "page": {
        "totalCount": 2,
        "totalPages": 1,
        "sortField": "creationTime",
        "sort": "desc",
        "pageSize": 2,
        "limit": 100
    },
    "link": {}
}

Criar uma definição de segmento habilitado para streaming

Uma definição de segmento será ativada automaticamente por transmissão se corresponder a uma das tipos de segmentação de transmissão listados acima.

Formato da API

POST /segment/definitions

Solicitação

curl -X POST \
  https://platform.adobe.io/data/core/ups/segment/definitions \
  -H 'Authorization: Bearer {ACCESS_TOKEN}'  \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
    "schema": {
        "name": "_xdm.context.profile"
    },
    "ttlInDays": 30,
    "name": "Homepage_continuous",
    "description": "People who are on their homepage - continuous",
    "expression": {
        "type": "PQL",
        "format": "pql/text",
        "value": "select var1 from xEvent where var1._experience.analytics.endUser.firstWeb.webPageDetails.isHomePage = true"
    },
    "evaluationInfo": {
        "batch": {
            "enabled": false
        },
        "continuous": {
            "enabled": true
        },
        "synchronous": {
            "enabled": false
        }
    }
}'
NOTE
Esta é uma solicitação padrão para "criar uma definição de segmento". Para obter mais informações sobre como criar uma definição de segmento, leia o tutorial em criação de uma definição de segmento.

Resposta

Uma resposta bem-sucedida retorna os detalhes da definição de segmento habilitado para streaming recém-criada.

{
    "id": "f15063cb-2da8-4851-a2e2-bf59ddd2f004",
    "schema": {
        "name": "_xdm.context.profile"
    },
    "ttlInDays": 30,
    "imsOrgId": "{ORG_ID}",
    "sandbox": {
        "sandboxId": "{SANDBOX_ID}",
        "sandboxName": "{SANDBOX_NAME}",
        "type": "production",
        "default": true
    },
    "name": "Homepage_continuous",
    "description": "People who are on their homepage - continuous",
    "expression": {
        "type": "PQL",
        "format": "pql/text",
        "value": "select var1 from xEvent where var1._experience.analytics.endUser.firstWeb.webPageDetails.isHomePage = true"
    },
    "evaluationInfo": {
        "batch": {
            "enabled": false
        },
        "continuous": {
            "enabled": true,
                   },
        "synchronous": {
            "enabled": false
        }
    },
    "creationTime": 1572021085000,
    "updateEpoch": 1572021086000,
    "updateTime": 1572021086000
}

Ativar avaliação programada enable-scheduled-segmentation

Quando a avaliação de transmissão tiver sido habilitada, uma linha de base deverá ser criada (depois disso, a definição do segmento sempre estará atualizada). A avaliação programada (também conhecida como segmentação programada) deve ser ativada primeiro para que o sistema execute automaticamente a linha de base. Com a segmentação programada, sua organização pode seguir uma programação recorrente para executar automaticamente trabalhos de exportação para avaliar as definições de segmento.

NOTE
A avaliação agendada pode ser ativada para sandboxes com um máximo de cinco (5) políticas de mesclagem para XDM Individual Profile. Se sua organização tiver mais de cinco políticas de mesclagem para XDM Individual Profile em um único ambiente de sandbox, não será possível usar a avaliação programada.

Criar um agendamento

Ao fazer uma solicitação POST para o /config/schedules você pode criar um agendamento e incluir a hora específica em que o agendamento deve ser acionado.

Formato da API

POST /config/schedules

Solicitação

A solicitação a seguir cria um novo agendamento com base nas especificações fornecidas no payload.

curl -X POST \
  https://platform.adobe.io/data/core/ups/config/schedules \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
        "name": "{SCHEDULE_NAME}",
        "type": "batch_segmentation",
        "properties": {
            "segments": ["*"]
        },
        "schedule": "0 0 1 * * ?",
        "state": "inactive"
        }'
Propriedade
Descrição
name
(Obrigatório) O nome da programação. Deve ser uma sequência de caracteres.
type
(Obrigatório) O tipo de processo em formato de sequência. Os tipos compatíveis são batch_segmentation e export.
properties
(Obrigatório) Um objeto que contém propriedades adicionais relacionadas ao agendamento.
properties.segments
(Obrigatório quando type igual a batch_segmentation) Usar ["*"] garante que todas as definições de segmento sejam incluídas.
schedule
(Obrigatório) Uma string contendo o agendamento do job. As ordens de produção só podem ser programadas para serem executadas uma vez por dia, o que significa que não é possível programar uma ordem de produção para ser executada mais de uma vez durante um período de 24 horas. O exemplo mostrado (0 0 1 * * ?) significa que a tarefa é acionada todos os dias às 1:00:00 UTC Para obter mais informações, consulte o apêndice na formato de expressão do cron na documentação sobre agendamentos na segmentação.
state
(Opcional) Sequência de caracteres contendo o estado do agendamento. Valores disponíveis: active e inactive. O valor padrão é inactive. Uma organização só pode criar um agendamento. As etapas para atualizar o agendamento estão disponíveis posteriormente neste tutorial.

Resposta

Uma resposta bem-sucedida retorna os detalhes do agendamento recém-criado.

{
    "id": "cd585edf-962d-420d-94ad-3be03e619ac2",
    "imsOrgId": "{ORG_ID}",
    "sandbox": {
        "sandboxId": "e7e17720-c5bb-11e9-aafb-87c71c35cac8",
        "sandboxName": "prod",
        "type": "production",
        "default": true
    },
    "name": "{SCHEDULE_NAME}",
    "state": "inactive",
    "type": "batch_segmentation",
    "schedule": "0 0 1 * * ?",
    "properties": {
        "segments": [
            "*"
        ]
    },
    "createEpoch": 1568267948,
    "updateEpoch": 1568267948
}

Ativar um agendamento

Por padrão, um agendamento fica inativo quando criado, a menos que state propriedade está definida como active no corpo da solicitação create (POST). Você pode habilitar um agendamento (defina o state para active) fazendo um pedido PATCH ao /config/schedules e incluindo a ID do agendamento no caminho.

Formato da API

POST /config/schedules/{SCHEDULE_ID}

Solicitação

A solicitação a seguir usa Formatação de patch de JSON para atualizar a state da programação para active.

curl -X POST \
  https://platform.adobe.io/data/core/ups/config/schedules/cd585edf-962d-420d-94ad-3be03e619ac2 \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '[
        {
          "op": "add",
          "path": "/state",
          "value": "active"
        }
      ]'

Resposta

Uma atualização bem-sucedida retorna um corpo de resposta vazio e um Status HTTP 204 (Sem conteúdo).

A mesma operação pode ser usada para desativar um agendamento substituindo o "valor" na solicitação anterior por "inativo".

Próximas etapas

Agora que você ativou definições de segmento novas e existentes para segmentação por transmissão e ativou a segmentação agendada para desenvolver uma linha de base e executar avaliações recorrentes, é possível começar a criar definições de segmento com transmissão ativada para sua organização.

Para saber como executar ações semelhantes e trabalhar com definições de segmento usando a interface do usuário do Adobe Experience Platform, visite o Guia do usuário do Construtor de segmentos.

Apêndice

A seção a seguir lista as perguntas frequentes relacionadas à segmentação de transmissão:

A "desqualificação" da segmentação por transmissão também ocorre em tempo real?

Para a maioria das instâncias, a desqualificação da segmentação por transmissão ocorre em tempo real. No entanto, as definições de segmento de transmissão que usam segmentos de segmentos não não desqualificar em tempo real, em vez de desqualificar após 24 horas.

Em quais dados a segmentação por transmissão funciona?

A segmentação de streaming funciona em todos os dados que foram assimilados usando uma fonte de streaming. Os segmentos assimilados usando uma origem em lote serão avaliados à noite, mesmo que se qualifiquem para segmentação por transmissão. Os eventos transmitidos para o sistema com um carimbo de data e hora com mais de 24 horas serão processados na tarefa em lote subsequente.

Como as definições de segmento são definidas como segmentação em lote ou por transmissão?

Uma definição de segmento é definida como segmentação em lote ou por transmissão com base em uma combinação de tipo de consulta e duração do histórico de eventos. Uma lista de quais definições de segmento serão avaliadas como um segmento de transmissão pode ser encontrada na seção tipos de consulta de segmentação de transmissão.

Observe que se um segmento contiver ambos um inSegment e uma cadeia direta de evento único, não pode se qualificar para segmentação por transmissão. Se quiser que essa definição de segmento se qualifique para segmentação por transmissão, você deve tornar a cadeia de evento único direta sua própria definição de segmento.

Por que o número de definições de segmento "total qualificado" continua aumentando, enquanto o número em "Últimos X dias" permanece em zero na seção de detalhes de definição do segmento?

O número total de definições de segmento qualificado é obtido do trabalho diário de segmentação, que inclui públicos qualificados para definições de segmento em lote e de transmissão. Esse valor é mostrado para definições de segmento em lote e de transmissão.

O número abaixo de "Últimos X dias" somente inclui públicos qualificados na segmentação por transmissão e somente aumenta se você tiver transmitido dados para o sistema e contar para essa definição de transmissão. Este valor é somente exibido para definições de segmento de transmissão. Como resultado, esse valor maio exibir como 0 para definições de segmento em lote.

Como resultado, se você vir que o número em "Últimos X dias" é zero e o gráfico de linhas também está relatando zero, você não todos os perfis transmitidos para o sistema que se qualificariam para essa definição de segmento.

Quanto tempo leva para uma definição de segmento ficar disponível?

Leva até uma hora para uma definição de segmento estar disponível.

Existem limitações para os dados que estão sendo transmitidos?

Para que os dados transmitidos sejam usados na segmentação por transmissão, há deve deve ser o espaçamento entre os eventos transmitidos. Se muitos eventos forem transmitidos no mesmo segundo, a Platform tratará esses eventos como dados gerados pelo bot e eles serão descartados. Como prática recomendada, você deve pelo menos cinco segundos entre os dados do evento para garantir que os dados sejam usados corretamente.

recommendation-more-help
770bc05d-534a-48a7-9f07-017ec1e14871