对于体验数据模型(XDM)中的任何字符串字段,您可以定义 枚举 用于限制字段可摄取到预定义集的值。 如果您尝试将数据摄取到枚举字段,并且该值与其配置中定义的任何数据不匹配,则将拒绝摄取。
与枚举相比,添加 建议值 字符串字段不会限制可摄取的值。 建议的值会影响 分段UI 将字符串字段作为属性包含在内时。
字段的更新建议值大约有五分钟的延迟,才能反映在分段UI中。
本指南介绍如何使用 架构注册表API. 有关如何在Adobe Experience Platform用户界面中执行此操作的步骤,请参阅 枚举和建议值的UI指南.
本指南假定您熟悉XDM中架构组合的元素,以及如何使用架构注册表API创建和编辑XDM资源。 如果您需要介绍,请参阅以下文档:
另外,强烈建议您查看 枚举和建议值演化规则 如果要更新现有字段,请执行以下操作: 如果要管理参与并集的架构的建议值,请参阅 合并枚举和建议值的规则.
在API中, 枚举 字段由 enum
数组,而 meta:enum
对象为这些值提供了友好显示名称:
"exampleStringField": {
"type": "string",
"enum": [
"value1",
"value2",
"value3"
],
"meta:enum": {
"value1": "Value 1",
"value2": "Value 2",
"value3": "Value 3"
},
"default": "value1"
}
对于枚举字段,架构注册表不允许 meta:enum
扩展到 enum
,因为尝试摄取超出这些约束范围的字符串值将不会通过验证。
或者,您也可以定义一个不包含 enum
数组,且仅使用 meta:enum
表示对象 建议值:
"exampleStringField": {
"type": "string",
"meta:enum": {
"value1": "Value 1",
"value2": "Value 2",
"value3": "Value 3"
},
"default": "value1"
}
由于字符串没有 enum
数组定义约束,其 meta:enum
可以扩展属性以包含新值。
扩展 meta:enum
标准字符串字段的 友好名称描述符 ,用于特定模式中的相关字段。
只能在架构级别添加字符串字段的建议值。 换句话说,将 meta:enum
一个架构中的标准字段不会影响使用相同标准字段的其他架构。
以下请求会将建议的值添加到标准 eventType
字段(由 XDM ExperienceEvent类) sourceSchema
:
curl -X POST \
https://platform.adobe.io/data/foundation/schemaregistry/tenant/descriptors \
-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}' \
-H 'Content-Type: application/json' \
-d '{
"@type": "xdm:alternateDisplayInfo",
"sourceSchema": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
"sourceProperty": "/eventType",
"title": {
"en_us": "Enum Event Type"
},
"description": {
"en_us": "Event type field with soft enum values"
},
"meta:enum": {
"eventA": {
"en_us": "Event Type A"
},
"eventB": {
"en_us": "Event Type B"
}
}
}'
应用描述符后,架构注册表在检索架构时响应以下内容(响应因空间而被截断):
{
"$id": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
"title": "Example Schema",
"properties": {
"eventType": {
"type":"string",
"title": "Enum Event Type",
"description": "Event type field with soft enum values.",
"meta:enum": {
"customEventA": "Custom Event Type A",
"customEventB": "Custom Event Type B"
}
}
}
}
如果标准字段已包含 meta:enum
,则描述符中的新值不会覆盖现有字段,而是会添加在中:
"standardField": {
"type":"string",
"title": "Example standard enum field",
"description": "Standard field with existing enum values.",
"meta:enum": {
"standardEventA": "Standard Event Type A",
"standardEventB": "Standard Event Type B",
"customEventA": "Custom Event Type A",
"customEventB": "Custom Event Type B"
}
}
管理 meta:enum
在自定义字段中,您可以通过PATCH请求更新字段的父类、字段组或数据类型。
以下请求更新了 meta:enum
自定义数据类型提供的“忠诚度级别”字段的值:
curl -X PATCH \
https://platform.adobe.io/data/foundation/schemaregistry/tenant/datatypes/_{TENANT_ID}.datatypes.8779fd45d6e4eb074300023a439862bbba359b60d451627a \
-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}' \
-H 'Content-Type: application/json' \
-d '[
{
"op": "replace",
"path": "/loyaltyLevel/meta:enum",
"value": {
"ultra-platinum": "Ultra Platinum",
"platinum": "Platinum",
"gold": "Gold",
"silver": "Silver",
"bronze": "Bronze"
}
}
]'
应用更改后,架构注册表在检索架构时会响应以下内容(响应因空间而被截断):
{
"$id": "https://ns.adobe.com/{TENANT_ID}/schemas/fbc52b243d04b5d4f41eaa72a8ba58be",
"title": "Example Schema",
"properties": {
"loyaltyLevel": {
"type":"string",
"title": "Loyalty Level",
"description": "The loyalty program tier that this customer qualifies for.",
"meta:enum": {
"ultra-platinum": "Ultra Platinum",
"platinum": "Platinum",
"gold": "Gold",
"silver": "Silver",
"bronze": "Bronze"
}
}
}
}
本指南介绍如何管理架构注册API中字符串字段的建议值。 请参阅 在API中定义自定义字段 以了解有关如何创建不同字段类型的详细信息。