Definición de campos XDM en la API del Registro de Esquema

Todos los campos del Modelo de datos de experiencia (XDM) se definen mediante el Esquema JSON restricciones que se aplican a su tipo de campo, con restricciones adicionales para nombres de campo que son aplicadas por Adobe Experience Platform. La API del Registro de esquemas permite definir campos personalizados en los esquemas mediante el uso de formatos y restricciones opcionales. Los tipos de campo XDM se exponen mediante el atributo de nivel de campo. meta:xdmType.

NOTA

meta:xdmType es un valor generado por el sistema y, por lo tanto, no es necesario que agregue esta propiedad al JSON para su campo al utilizar la API (excepto cuando creación de tipos de mapa personalizados). Una práctica recomendada es utilizar tipos de esquema JSON (como string y integer) con las restricciones de mínimo/máximo adecuadas, tal como se definen en la siguiente tabla.

En la tabla siguiente se describe el formato adecuado para definir distintos tipos de campos, incluidos los que tienen propiedades opcionales. Encontrará más información sobre las propiedades opcionales y las palabras clave específicas del tipo en la Documentación del esquema JSON.

Para empezar, busque el tipo de campo deseado y utilice el código de ejemplo proporcionado para crear la solicitud de API de creación de un grupo de campos o creación de un tipo de datos.

Tipo XDM Propiedades opcionales Ejemplo
String
  • pattern
  • minLength
  • maxLength
"sampleField": { "type": "cadena", "patrón": "^[A-Z]{2}$", "maxLength": 2 }
URI
"sampleField": { "type": "string", "format": "uri" }
Enum
  • default
  • meta:enum
Los valores de enumeración restringidos se proporcionan en la sección enum , mientras que las etiquetas opcionales de cara al cliente para cada valor se pueden proporcionar en meta:enum:
"sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Value 1", "value2": "Value 2", "value3": "Valor 3" }, "predeterminado": "value1" }

Tenga en cuenta que meta:enum value does not declare una enumeración o conduzca cualquier validación de datos por su cuenta. En la mayoría de los casos, las cadenas proporcionadas en meta:enum también se proporcionan en enum para garantizar que los datos estén restringidos. Sin embargo, hay algunos casos de uso en los que meta:enum se proporciona sin enum matriz. Consulte el tutorial en definición de valores sugeridos para obtener más información.
Number
"sampleField": { "type": "number" }
Long
"sampleField": { "type": "integer", "Minimum": -9007199254740992, "máximo": 9007199254740992 }
Integer
"sampleField": { "type": "integer", "Minimum": -2147483648, "máximo": 2147483648 }
Cortocircuito
"sampleField": { "type": "integer", "Minimum": -32768, "máximo": 32768 }
Byte
"sampleField": { "type": "integer", "Minimum": -128, "máximo": 128 }
Boolean
  • default
"sampleField": { "type": "booleano", "predeterminado": false }
Date
"sampleField": { "type": "string", "format": "date", "example": ["2004-10-23"] }
DateTime
"sampleField": { "type": "string", "format": "date-time", "ejemplos": ["2004-10-23T12:00:00-06:00"] }
Array Una matriz de tipos escalares básicos (p. ej. cadenas):
"sampleField": { "type": "matriz", "elementos": { "type": "string" } }
Matriz de objetos definida por otro esquema:
"sampleField": { "type": "matriz", "elementos": { "$ref": "https://ns.adobe.com/xdm/data/paymentitem" } }
(objeto) La variable type atributo de cada subcampo definido en properties se puede definir con cualquier tipo escalar:
"sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "número" } } } }
Los campos de tipo objeto se pueden definir haciendo referencia a la variable $id de un tipo de datos:
"sampleField": { "type": "object", "$ref": "https://ns.adobe.com/xdm/common/phoneinteraction" }
Map Un campo de tipo mapa es esencialmente un campo de tipo objeto con un conjunto de claves sin restricciones. Al igual que los objetos, los mapas tienen un type valor de object, pero sus meta:xdmType se configura explícitamente como map.

Un mapa no debe defina cualquier propiedad. It must definir una sola additionalProperties para describir el tipo de valores contenidos en el mapa (cada mapa solo puede contener un tipo de datos). La variable type debe ser string o integer.

Campo de asignación con valores de tipo cadena:
"sampleField": { "type": "object", "meta:xdmType": "map", "additionalProperties":{ "type": "string" } }
Consulte la sección siguiente para obtener más información sobre la creación de tipos de mapa personalizados en XDM.

Creación de tipos de mapa personalizados

Para admitir datos "similares a mapas" de forma eficaz en XDM, los objetos se pueden anotar con un meta:xdmType configure como map para dejar claro que un objeto debe administrarse como si el conjunto de claves no estuviera limitado. Los datos que se incorporan en los campos de asignación deben utilizar claves de cadena y solo valores de cadena o entero (tal y como determinan additionalProperties.type).

XDM impone las siguientes restricciones al uso de esta sugerencia de almacenamiento:

  • Los tipos de mapa DEBEN ser del tipo object.
  • Los tipos de mapa NO DEBEN tener propiedades definidas (en otras palabras, definen objetos "vacíos").
  • Los tipos de mapa DEBEN incluir un additionalProperties.type campo que describe los valores que pueden colocarse dentro del mapa, ya sea string o integer.

Asegúrese de que solo está utilizando campos de tipo mapa cuando es absolutamente necesario, ya que presentan los siguientes inconvenientes de rendimiento:

  • El tiempo de respuesta del servicio de consulta de Adobe Experience Platform se degrada de tres segundos a diez segundos para 100 millones de registros.
  • Los mapas deben tener menos de 16 claves o, de lo contrario, pueden degradarse aún más.

La interfaz de usuario de Platform también tiene limitaciones en la forma en que puede extraer las claves de los campos de tipo mapa. Mientras que los campos de tipo objeto se pueden expandir, los mapas se muestran como un solo campo en su lugar.

Pasos siguientes

Esta guía explica cómo definir diferentes tipos de campos en la API. Para obtener más información sobre el formato de los tipos de campo XDM, consulte la guía de Restricciones de tipo de campo XDM.

En esta página