使用Data Prep将部分行更新发送到Real-Time Customer Profile
-
通过DCS入口为配置文件更新摄取体验数据模型(XDM)实体更新消息(包含JSONPATCH操作)已被弃用。 作为替代方法,请遵循本指南中概述的步骤。
-
您还可以使用HTTP API源将原始数据摄取到DCS入口,并指定必要的数据映射以将您的数据转换为符合XDM标准的消息以进行配置文件更新。
-
在流式更新插入中使用数组时,必须明确使用
upsert_array_append
或upsert_array_replace
来定义操作的明确意图。 如果缺少这些函数,您可能会收到错误。
使用Data Prep中的流更新插入向Real-Time Customer Profile数据发送部分行更新,同时通过单个API请求创建和建立新的标识链接。
通过流式处理更新插入,您可以在引入期间将数据转换为Real-Time Customer ProfilePATCH请求时保留数据的格式。 根据您提供的输入,Data Prep允许您发送单个API有效负载并将数据转换为Real-Time Customer ProfilePATCH和Identity Service创建请求。
Data Prep使用标头参数区分插入和更新插入。 所有使用更新插入的行都必须有一个标题。 您可以使用更新服务器,无论是否包含标识描述符。 如果您正在使用带有身份的upsert,则必须按照配置身份数据集一节中概述的配置步骤操作。 如果您使用的是没有身份的upsert,则不需要在请求中提供身份配置。 有关详细信息,请阅读有关不带标识的流更新插入的部分。
本文档提供了有关如何在Data Prep中流式传输更新插件的信息。
快速入门
此概述需要您对Adobe Experience Platform的以下组件有一定的了解:
- Data Prep: Data Prep允许数据工程师映射、转换和验证与Experience Data Model (XDM)之间的数据。
- Identity Service:通过跨设备和系统桥接身份,更好地了解个人客户及其行为。
- 实时客户个人资料:根据来自多个来源的汇总数据,实时提供统一的客户个人资料。
- 源:Experience Platform允许从各种源摄取数据,同时允许您使用Platform服务来构建、标记和增强传入数据。
在Data Prep中使用流更新插入 streaming-upserts-in-data-prep
流更新插入高级工作流
Data Prep中的流更新插入按如下方式工作:
-
您必须首先创建并启用Profile使用情况的数据集。 有关详细信息,请参阅启用 Profile的数据集的指南。
-
如果必须链接新标识,则还必须创建一个与您的Profile数据集具有相同架构 的其他数据集。
-
准备好数据集后,必须创建一个数据流以将传入请求映射到Profile数据集;
-
接下来,必须更新传入请求以包含必要的标头。 这些标头定义:
- 需要对Profile执行的数据操作:
create
、merge
和delete
。 - 要对Identity Service执行的可选标识操作:
create
。
- 需要对Profile执行的数据操作:
配置身份数据集 configure-the-identity-dataset
如果必须关联新身份,则必须在传入有效负载中创建并传递其他数据集。 在创建身份数据集时,必须确保满足以下要求:
- 身份数据集必须具有其关联的架构作为Profile数据集。 架构不匹配可能导致系统行为不一致。
- 但是,您必须确保标识数据集不同于Profile数据集。 如果数据集相同,则将覆盖数据而不是更新数据。
- 虽然必须为Profile启用初始数据集,但不应为Profile启用标识数据集 。 否则,数据也将被覆盖而不是更新。 但是,应该为Identity Service启用标识数据集 。
与身份数据集关联的架构中的必填字段 identity-dataset-required-fileds
如果您的架构包含必填字段,则必须取消数据集验证,以使Identity Service仅接收标识。 您可以通过将disabled
值应用于acp_validationContext
参数来禁止验证。 请参阅以下示例:
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"
]
}
}'
传入有效负荷结构
下面显示了建立新身份链接的传入有效负荷结构的示例。
具有身份配置的有效负载
{
"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
支持的操作
Real-Time Customer Profile支持以下操作:
create
merge
delete
Identity Service支持以下操作:
create
create
作为operations.identity
的值传递,则Data Prep会为Identity Service生成XDM实体创建请求。 如果标识已存在,则忽略该标识。 注意: 如果operations.identity
设置为create
,则还必须指定identityDatasetId
。 将为此数据集ID生成由Data Prep组件内部生成的XDM实体创建消息。没有标识配置的有效负载 payload-without-identity-configuration
如果不需要链接新标识,则可以在操作中忽略identity
和identityDatasetId
参数。 这样做只向Real-Time Customer Profile发送数据并跳过Identity Service。 有关示例,请参阅以下有效负载:
{
"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.
}
动态传递主要身份
对于XDM更新,必须为Profile启用架构并包含主标识。 您可以通过两种方式指定XDM架构的主要标识:
- 在XDM架构中指定一个静态字段作为主标识;
- 通过XDM架构中的身份映射字段组,将一个身份字段指定为主身份。
在XDM模式中指定一个静态字段作为主标识字段
在下面的示例中,state
、homePhone.number
和其他属性以其各自的给定值更新插入到Profile中,主标识为sampleEmail@gmail.com
。 然后,流Data Prep组件生成了XDM实体更新消息。 然后,Real-Time Customer Profile确认XDM更新消息以更新插入用户档案记录。
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"
}
}'
通过XDM架构中的身份映射字段组指定其中一个身份字段作为主身份
在此示例中,标头包含具有identity
和identityDatasetId
属性的operations
属性。 这允许将数据与Real-Time Customer Profile合并,也允许将标识传递到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"
}
}'
已知限制和关键注意事项
下面概述了使用Data Prep流式传输更新插入时要考虑的已知限制列表:
- 仅当向Real-Time Customer Profile发送部分行更新时,才应使用流更新插入方法。 部分行更新 不是 被数据湖使用。
- 流更新插入方法不支持更新、替换和删除身份。 如果不存在新标识,则会创建新标识。 因此,必须始终将
identity
操作设置为创建。 如果标识已存在,则该操作是无操作。 - 流更新插入方法当前不支持Adobe Experience Platform Web SDK和Adobe Experience Platform Mobile SDK。
后续步骤
通过阅读本文档,您现在应该了解如何在Data Prep中流式传输更新内容,以便向Real-Time Customer Profile数据发送部分行更新,同时还可以创建标识并将其与单个API请求关联。 有关其他Data Prep功能的详细信息,请阅读Data Prep 概述。 要了解如何在Data Prep API中使用映射集,请阅读Data Prep 开发人员指南。