Enviar atualizações parciais de linha para Real-Time Customer Profile usando Data Prep
-
A assimilação de mensagens de atualização de entidade do Experience Data Model (XDM) (com operações PATCH JSON) para atualizações de perfil por meio da entrada do DCS foi descontinuada. Siga as etapas descritas neste guia como uma alternativa.
-
Você também pode usar a fonte da API HTTP para assimilar dados brutos na entrada do DCS e especificar os mapeamentos de dados necessários para transformar seus dados em mensagens compatíveis com XDM para atualizações de Perfil.
-
Ao usar matrizes em upserts de transmissão, você deve usar explicitamente
upsert_array_append
ouupsert_array_replace
para definir a intenção clara da operação. Você poderá receber erros se essas funções estiverem ausentes.
Use upserts de streaming em Data Prep para enviar atualizações parciais de linha aos dados de Real-Time Customer Profile, ao mesmo tempo em que cria e estabelece novos links de identidade com uma única solicitação de API.
Ao fazer a transmissão de upserts, você pode reter o formato dos dados enquanto traduz esses dados para Real-Time Customer Profile solicitações de PATCH durante a assimilação. Com base nas entradas que você fornece, o Data Prep permite enviar uma única carga de API e traduzir os dados para Real-Time Customer Profile PATCH e Identity Service solicitações CREATE.
Data Prep usa parâmetros de cabeçalho para distinguir entre inserções e substituições. Todas as linhas que usam sobreposições devem ter um cabeçalho. É possível usar sobreposições com ou sem descritores de identidade. Se você estiver usando sobreposições com identidades, siga as etapas de configuração descritas na seção em configurando o conjunto de dados de identidade. Se estiver usando upserts sem identidades, não será necessário fornecer configurações de identidade na solicitação. Leia a seção sobre upserts de streaming sem identidades para obter mais informações.
Este documento fornece informações sobre como fazer streaming de upserts no Data Prep.
Introdução
Esta visão geral requer uma compreensão funcional dos seguintes componentes do Adobe Experience Platform:
- Data Prep: Data Prep permite que os engenheiros de dados mapeiem, transformem e validem dados de e para o Experience Data Model (XDM).
- Identity Service: obtenha uma melhor visão de clientes individuais e de seu comportamento ao unir as identidades de vários dispositivos e sistemas.
- Perfil do cliente em tempo real: fornece um perfil de cliente unificado em tempo real com base em dados agregados de várias fontes.
- Fontes: o Experience Platform permite que os dados sejam assimilados de várias fontes e, ao mesmo tempo, fornece a capacidade de estruturar, rotular e aprimorar os dados recebidos usando os serviços da plataforma.
Usar upserts de streaming em Data Prep streaming-upserts-in-data-prep
Streaming substitui o fluxo de trabalho de alto nível
Os upserts de streaming em Data Prep funcionam da seguinte forma:
-
Primeiro, você deve criar e habilitar um conjunto de dados para consumo de Profile. Consulte o manual sobre habilitação de um conjunto de dados para Profile para obter mais informações.
-
Se novas identidades precisarem ser vinculadas, você também deverá criar um conjunto de dados adicional com o mesmo esquema do seu conjunto de dados Profile.
-
Depois que os conjuntos de dados forem preparados, você deverá criar um fluxo de dados para mapear a solicitação recebida para o conjunto de dados Profile.
-
Em seguida, você deve atualizar a solicitação de entrada para incluir os cabeçalhos necessários. Esses cabeçalhos definem:
- A operação de dados que precisa ser executada com Profile:
create
,merge
edelete
. - A operação de identidade opcional a ser executada com Identity Service:
create
.
- A operação de dados que precisa ser executada com Profile:
Configurar o conjunto de dados de identidade configure-the-identity-dataset
Se novas identidades precisarem ser vinculadas, você deverá criar e transmitir um conjunto de dados adicional na carga recebida. Ao criar um conjunto de dados de identidade, você deve garantir que os seguintes requisitos sejam atendidos:
- O conjunto de dados de identidade deve ter seu esquema associado como o conjunto de dados Profile. Uma incompatibilidade de esquemas pode levar a um comportamento inconsistente do sistema.
- No entanto, você deve garantir que o conjunto de dados de identidade seja diferente do conjunto de dados Profile. Se os conjuntos de dados forem iguais, os dados serão substituídos em vez de atualizados.
- Embora o conjunto de dados inicial deva ser habilitado para Profile, o conjunto de dados de identidade não deve ser habilitado para Profile. Caso contrário, os dados também serão substituídos em vez de atualizados. No entanto, o conjunto de dados de identidade deve ser habilitado para Identity Service.
Campos obrigatórios nos esquemas associados ao conjunto de dados de identidade identity-dataset-required-fileds
Se o esquema contiver campos obrigatórios, a validação do conjunto de dados deverá ser suprimida para permitir que Identity Service receba apenas as identidades. Você pode suprimir a validação aplicando o valor disabled
ao parâmetro acp_validationContext
. Consulte o exemplo abaixo:
curl -X POST 'https://platform.adobe.io/data/foundation/catalog/dataSets/62257bef7a75461948ebcaaa' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {IMS_ORG}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-d '{
"tags": {
"acp_validationContext": [
"disabled"
],
"unifiedProfile": [
"enabled:false"
],
"unifiedIdentity": [
"enabled:true"
]
}
}'
Estrutura de carga de entrada
A seguir é mostrado um exemplo de uma estrutura de payload de entrada que estabelece novos links de identidade.
Carga com configuração de identidade
{
"header": {
"flowId": "923e2ac3-3869-46ec-9e6f-7012c4e23f69",
"imsOrgId": "{ORG_ID}",
"datasetId": "621fc19ab33d941949af16c8",
"operations": {
"data": "create" (default)/"merge"/"delete",
"identity": "create",
"identityDatasetId": "621fc19ab33d941949af16d9"
}
}
... //The raw data attributes are included here as the key/value pairs of the "body" property.
}
flowId
datasetId
.imsOrgId
datasetId
operations
operations.data
operations.identity
operations.identityDatasetId
Operações suportadas
As seguintes operações são suportadas por Real-Time Customer Profile:
create
merge
delete
As seguintes operações são suportadas por Identity Service:
create
create
for passado como valor para operations.identity
, Data Prep gerará uma solicitação de criação de entidade XDM para Identity Service. Se a identidade já existir, ela será ignorada. Observação: se operations.identity
estiver definido como create
, então identityDatasetId
também deve ser especificado. A mensagem de criação da entidade XDM gerada internamente pelo componente Data Prep será gerada para esta ID de conjunto de dados.Carga sem configuração de identidade payload-without-identity-configuration
Se novas identidades não precisarem ser vinculadas, você poderá omitir os parâmetros identity
e identityDatasetId
nas operações. Isso envia dados somente para Real-Time Customer Profile e ignora o Identity Service. Consulte a carga abaixo para obter um exemplo:
{
"header": {
"flowId": "923e2ac3-3869-46ec-9e6f-7012c4e23f69",
"imsOrgId": "{ORG_ID}",
"datasetId": "621fc19ab33d941949af16c8",
"operations": {
"data": "create"/"merge"/"delete",
}
}
... //The raw data attributes are included here as the key/value pairs of the "body" property.
}
Transmitir dinamicamente as identidades principais
Para atualizações XDM, o esquema deve ser habilitado para Profile e conter uma identidade primária. Você pode especificar a identidade principal de um esquema XDM de duas maneiras:
- Designar um campo estático como a identidade principal no esquema XDM;
- Designe um dos campos de identidade como a identidade primária por meio do grupo de campos do mapa de identidade no esquema XDM.
Designar um campo estático como o campo de identidade principal no esquema XDM
No exemplo abaixo, state
, homePhone.number
e outros atributos são substituídos por seus respectivos valores fornecidos na Profile com a identidade primária de sampleEmail@gmail.com
. Uma mensagem de atualização de entidade XDM é gerada pelo componente de streaming Data Prep. Real-Time Customer Profile então confirma que a mensagem de atualização do XDM deve substituir o registro do perfil.
curl -X POST 'https://dcs.adobedc.net/collection/9aba816d350a69c4abbd283eb5818ec3583275ffce4880ffc482be5a9d810c4b' \
-H 'Content-Type: application/json' \
-H 'x-adobe-flow-id: d5262d48-0f47-4949-be6d-795f06933527' \
-d '{
"header": {
"flowId" : "d5262d48-0f47-4949-be6d-795f06933527",
"imsOrgId": "{ORG_ID}",
"datasetId": "62259f817f62d71947929a7b",
"operations": {
"data": "create"
}
},
{
"body": {
"homeAddress": {
"country": "US",
"state": "GA",
"region": "va7"
},
"homePhone": {
"number": "123.456.799"
},
"identityMap": {
"Email": [{
"id": "sampleEmail@gmail.com",
"primary": true
}]
},
"personalEmail": {
"address": "sampleEmail@gmail.com",
"primary": true
},
"personID": "346576345",
"_id": "346576345",
"timestamp": "2021-05-05T17:51:45.1880+02",
"workEmail": "sampleWorkEmail@gmail.com"
}
}'
Designar um dos campos de identidade como a identidade primária por meio do grupo de campos do mapa de identidade no esquema XDM
Neste exemplo, o cabeçalho contém o atributo operations
com as propriedades identity
e identityDatasetId
. Isso permite que os dados sejam mesclados com Real-Time Customer Profile e também que as identidades sejam passadas para Identity Service.
curl -X POST 'https://dcs.adobedc.net/collection/9aba816d350a69c4abbd283eb5818ec3583275ffce4880ffc482be5a9d810c4b' \
-H 'Content-Type: application/json' \
-H 'x-adobe-flow-id: d5262d48-0f47-4949-be6d-795f06933527' \
-d '{
"header": {
"flowId" : "d5262d48-0f47-4949-be6d-795f06933527",
"imsOrgId": "{ORG_ID}",
"datasetId": "62259f817f62d71947929a7b",
"operations": {
"data": "merge",
"identity": "create",
"identityDatasetId": "6254a93b851ecd194b64af9e"
}
},
{
"body": {
"homeAddress": {
"country": "US",
"state": "GA",
"region": "va7"
},
"homePhone": {
"number": "123.456.799"
},
"identityMap": {
"Email": [{
"id": "sampleEmail@gmail.com",
"primary": true
}]
},
"personalEmail": {
"address": "sampleEmail@gmail.com",
"primary": true
},
"personID": "346576345",
"_id": "346576345",
"timestamp": "2021-05-05T17:51:45.1880+02",
"workEmail": "sampleWorkEmail@gmail.com"
}
}'
Limitações conhecidas e principais considerações
A seguir, uma lista de limitações conhecidas a serem consideradas ao transmitir upserts com Data Prep:
- O método de streaming upserts deve ser usado somente ao enviar atualizações de linhas parciais para Real-Time Customer Profile. As atualizações de linha parciais são não consumidas pelo data lake.
- O método de upserts de transmissão não oferece suporte à atualização, substituição e remoção de identidades. Novas identidades serão criadas se não existirem. Portanto, a operação
identity
sempre deve ser definida como criar. Se uma identidade já existir, a operação será no-op. - Atualmente, o método de upserts por transmissão não oferece suporte ao Adobe Experience Platform Web SDK e ao Adobe Experience Platform Mobile SDK.
Próximas etapas
Após a leitura deste documento, você deve entender como fazer streaming de upserts no Data Prep para enviar atualizações parciais de linhas aos seus dados do Real-Time Customer Profile, além de criar e vincular identidades com uma única solicitação de API. Para obter mais informações sobre outros recursos do Data Prep, leia a Data Prep visão geral. Para saber como usar conjuntos de mapeamento na API Data Prep, leia o Data Prep guia do desenvolvedor.