Restricciones de tipo de campo XDM

En los esquemas del Modelo de datos de experiencia (XDM), el tipo de campo limita qué tipo de datos puede contener el campo. Este documento proporciona información general sobre cada tipo de campo principal, incluidos los otros formatos de serialización a los que se pueden asignar y cómo definir sus propios tipos de campo en la API para aplicar diferentes restricciones.

Primeros pasos

Antes de usar esta guía, revise la conceptos básicos de la composición del esquema para obtener una introducción a los esquemas XDM, las clases y los grupos de campos de esquema.

Si planea definir sus propios tipos de campo en la API, se recomienda encarecidamente que comience con la variable Guía para desarrolladores de Schema Registry para aprender a crear grupos de campos y tipos de datos para incluir sus campos personalizados en. Si utiliza la interfaz de usuario del Experience Platform para crear sus esquemas, consulte la guía de definición de campos en la interfaz de usuario para aprender a implementar restricciones en campos definidos dentro de grupos de campos personalizados y tipos de datos.

Estructura base y ejemplos

XDM se basa en el esquema JSON y, por lo tanto, los campos XDM heredan una sintaxis similar al definir su tipo. Comprender cómo se representan los distintos tipos de campos en el esquema JSON puede ayudar a indicar las restricciones de base de cada tipo.

NOTA

Consulte la Guía de fundamentos de API para obtener más información sobre el esquema JSON y otras tecnologías subyacentes en las API de plataforma.

La siguiente tabla describe cómo se representa cada tipo XDM en el esquema JSON, junto con un valor de ejemplo que se ajusta al tipo:

Tipo XDM Esquema JSON Ejemplo
String
{"type": "string"}
"Platinum"
Doble
{"type": "número"}
12925.49
Long
{ "type": "integer", "maximum": 9007199254740991, "mínimo": -9007199254740991 }
1478108935
Integer
{ "type": "integer", "maximum": 2147483648, "mínimo": -2147483648 }
24906290
Cortocircuito
{ "type": "integer", "maximum": 32768, "mínimo": -32768 }
15781
Byte
{ "type": "integer", "maximum": 128, "mínimo": -128 }
90
Date*
{ "type": "string", "format": "date" }
"2019-05-15"
DateTime*
{ "type": "string", "format": "date-time" }
"2019-05-15T20:20:39+00:00"
Boolean
{"type": "string"}
true

*Todas las cadenas con formato de fecha deben cumplir la norma ISO 8601 (RFC 3339, sección 5.6).

Asignación de tipos XDM a otros formatos

Las secciones siguientes describen cómo cada tipo XDM se asigna a otros formatos de serialización comunes:

IMPORTANTE

Entre los tipos XDM estándar que se enumeran en las tablas siguientes, la variable Mapa también se incluye. Los mapas se utilizan en esquemas estándar cuando los datos se representan como claves que se asignan a determinados valores o cuando las claves no se pueden incluir razonablemente en un esquema estático y deben tratarse como valores de datos.

Los campos de tipo Mapa están reservados para el uso del esquema del sector y del proveedor y, por lo tanto, no se pueden utilizar en los recursos personalizados que defina. La inclusión del tipo de mapa en las tablas siguientes solo pretende ayudarle a determinar cómo asignar los datos existentes a XDM si actualmente se almacenan en cualquiera de los formatos que se enumeran a continuación.

Parquet, Spark SQL y Java

Tipo XDM Parqué Spark SQL Java
Cadena Tipo: BYTE_ARRAY
Anotación: UTF8
StringType java.lang.String
Duplicada Tipo: DOUBLE LongType java.lang.Double
Largo Tipo: INT64 LongType java.lang.Long
Número entero Tipo: INT32
Anotación: INT_32
IntegerType java.lang.Integer
Corto Tipo: INT32
Anotación: INT_16
ShortType java.lang.Short
Byte Tipo: INT32
Anotación: INT_8
ByteType java.lang.Short
Fecha Tipo: INT32
Anotación: DATE
DateType java.util.Date
DateTime Tipo: INT64
Anotación: TIMESTAMP_MILLIS
TimestampType java.util.Date
Boolean Tipo: BOOLEAN BooleanType java.lang.Boolean
Mapa MAP-grupo anotado

(<key-type> debe STRING)
MapType

(keyType debe StringType)
java.util.Map

Scala, .NET y CosmosDB

Tipo XDM Scala .NET CosmosDB
Cadena String System.String String
Duplicada Double System.Double Number
Largo Long System.Int64 Number
Número entero Int System.Int32 Number
Corto Short System.Int16 Number
Byte Byte System.SByte Number
Fecha java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
Booleano Boolean System.Boolean Boolean
Mapa Map (N/D) object

MongoDB, Aerospike y Protobuf 2

Tipo XDM MongoDB Aerospike Protobuf 2
Cadena string String string
Duplicada double Double double
Largo long Integer int64
Número entero int Integer int32
Corto int Integer int32
Byte int Integer int32
Fecha date Integer
(milisegundos de Unix)
int64
(milisegundos de Unix)
DateTime timestamp Integer
(milisegundos de Unix)
int64
(milisegundos de Unix)
Booleano bool Integer
(0/1 binario)
bool
Mapa object map map<key_type, value_type>

Definición de tipos de campo XDM en la API

Todos los campos XDM se definen mediante el estándar Esquema JSON restricciones que se aplican a su tipo de campo, con restricciones adicionales para nombres de campo que son aplicadas por Experience Platform. La API del Registro de esquemas permite definir tipos de campos adicionales 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 añada esta propiedad al JSON para su campo al utilizar la API de . 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 ampliar enumeraciones blandas 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 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). Los valores pueden ser cualquier XDM válido type o una referencia a otro esquema mediante un $ref atributo.

Campo de asignación con valores de tipo cadena:
"sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }
Campo de mapa con matrices de cadenas para valores:
"sampleField": { "type": "object", "additionalProperties":{ "type": "matriz", "elementos": { "type": "string" } } } }
Campo de mapa que hace referencia a otro tipo de datos:
"sampleField": { "type": "object", "additionalProperties":{ "$ref": "https://ns.adobe.com/xdm/data/paymentitem" } }

En esta página