API에서 제안된 값 관리
XDM(Experience Data Model)의 모든 문자열 필드에 대해 필드가 수집할 수 있는 값을 사전 정의된 집합으로 제한하는 enum을 정의할 수 있습니다. 열거형 필드에 데이터를 수집하려고 하는데 값이 해당 구성에 정의된 값과 일치하지 않으면 수집이 거부됩니다.
열거형과 달리 문자열 필드에 제안 값을 추가해도 수집할 수 있는 값이 제한되지 않습니다. 대신 제안된 값은 문자열 필드를 특성으로 포함할 때 세그먼테이션 UI에서 사용할 수 있는 사전 정의된 값에 영향을 줍니다.
이 안내서에서는 스키마 레지스트리 API를 사용하여 제안된 값을 관리하는 방법을 다룹니다. Adobe Experience Platform 사용자 인터페이스에서 이 작업을 수행하는 방법에 대한 단계는 열거형 및 제안 값에 대한 UI 안내서를 참조하십시오.
전제 조건
이 안내서에서는 사용자가 XDM의 스키마 구성 요소 및 스키마 레지스트리 API를 사용하여 XDM 리소스를 만들고 편집하는 방법을 잘 알고 있다고 가정합니다. 소개가 필요한 경우 다음 설명서를 참조하십시오.
기존 필드를 업데이트하는 경우 열거형 및 제안 값에 대한 진화 규칙을 검토하는 것이 좋습니다. 유니온에 참여하는 스키마에 대한 제안 값을 관리하는 경우 열거형과 제안 값 병합 규칙을 참조하십시오.
컴포지션
API에서 enum 필드의 제한 값은 enum 배열로 표시되지만 meta:enum 개체는 해당 값에 대해 친숙한 표시 이름을 제공합니다.
default 속성은 스키마 정의에 의도한 값을 문서화합니다. Experience Platform은 수집 또는 데이터 준비 흐름 동안 default을(를) 자동으로 적용하지 않습니다. UI에서 유형별 필드 속성을 참조하세요."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 속성을 확장하여 새 값을 포함할 수 있습니다.
표준 필드에 제안 값 추가 add-suggested-standard
표준 문자열 필드의 meta:enum을(를) 확장하려면 특정 스키마에서 해당 필드에 대한 친숙한 이름 설명자를 만들 수 있습니다.
meta:enum을(를) 확장해도 동일한 표준 필드를 사용하는 다른 스키마에는 영향을 주지 않습니다.다음 요청은 sourceSchema에서 식별된 스키마의 표준 eventType 필드(XDM ExperienceEvent 클래스에서 제공)에 제안된 값을 추가합니다.
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 아래의 값이 이미 있는 경우 설명자의 새 값이 기존 필드를 덮어쓰지 않고 대신 추가됩니다.| code language-json |
|---|
|
사용자 정의 필드에 대한 제안 값 관리 suggested-custom
사용자 지정 필드의 meta:enum을(를) 관리하려면 PATCH 요청을 통해 필드의 상위 클래스, 필드 그룹 또는 데이터 형식을 업데이트할 수 있습니다.
[!WARNING]
표준 필드와 달리 사용자 지정 필드의
meta:enum을(를) 업데이트하면 해당 필드를 사용하는 다른 모든 스키마에 영향을 줍니다. 변경 사항이 스키마 간에 전파되지 않도록 하려면 대신 새 사용자 지정 리소스를 만드는 것이 좋습니다.
다음 요청은 사용자 지정 데이터 형식에서 제공한 “충성도 수준” 필드의 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에서 사용자 지정 필드 정의에 대한 안내서를 참조하십시오.