Show Menu
TEMAS×

Restricciones de tipo de campo XDM

Los tipos de campo XDM que se seleccionan para los esquemas restringen los tipos de datos que dichos campos pueden contener. Este documento proporciona una visión general de 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 utilizar esta guía, consulte los conceptos básicos de la composición del esquema para obtener una introducción a los esquemas, clases y mezclas XDM.
Si planea definir sus propios tipos de campo, se recomienda enfáticamente que inicio con la guía para desarrolladores de Esquema Registry para aprender a crear mezclas y tipos de datos para incluir los campos personalizados.

Asignación de tipos XDM a otros formatos

La tabla siguiente describe la asignación entre cada tipo ( meta:xdmType ) XDM y otros formatos de serialización.
Tipo
XDM(meta:xdmType)
JSON
(Esquema JSON)
Parquet
(tipo/anotación)
Spark SQL
Java
Scala
.NET
CosmosDB
MongoDB
Aerospike
Protobuf 2
string
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
Cadena
System.String
Cadena
string
Cadena
string
entero
type:number
DOBLE
DoubleType
java.lang.Double
Duplicada
System.Double
Número
doble
Duplicada
doble
long
tipo:
entero máximo:253+1
INT64
LongType
java.lang.Long
Largo
System.Int64
Número
long
Número entero
int64
int
tipo:
entero máximo:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
Número
int
Número entero
int32
short
tipo:
entero máximo:215
INT32/INT_16
ShortType
java.lang.Short
Corto
System.Int16
Número
int
Número entero
int32
byte
tipo:
entero máximo:27
INT32/INT_8
ByteType
java.lang.Short
Byte
System.SByte
Número
int
Número entero
int32
Booleano
type:boolean
BOOLEAN
BooleanType
java.lang.Boolean
Booleano
System.Boolean
Booleano
bool
Número entero
Número entero
date
type:
stringformat:date
(RFC 3339, sección 5.6)
INT32/FECHA
DateType
java.util.Date
java.util.Date
System.DateTime
Cadena
date
Entero
(milis unix)
int64
(milisegundos unix)
date-time
type:
stringformat:date-time
(RFC 3339, sección 5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
Cadena
timestamp
Entero
(milis unix)
int64
(milisegundos unix)
map
object
El grupo
anotado MAP< key_type> DEBE ser STRING
< value_type> tipo de valores de mapa
MapType
"keyType" DEBE ser StringType
"valueType" es el tipo de valores de asignación.
java.util.Map
Mapa
---
object
object
map
map< key_type, value_type>

Definición de tipos de campo XDM en la API

Los esquemas XDM se definen utilizando estándares de Esquema JSON y tipos de campo básicos, con restricciones adicionales para los nombres de campo que son impuestas por Experience Platform. La API del Registro de Esquema permite definir tipos de campo adicionales mediante el uso de formatos y restricciones opcionales. Los tipos de campo XDM están expuestos por el atributo de nivel de campo, meta:xdmType .
meta:xdmType es un valor generado por el sistema y, por lo tanto, no es necesario agregar esta propiedad al JSON para el campo. Lo mejor es utilizar tipos de Esquemas JSON (como cadena e entero) con las restricciones mínimas/máximas adecuadas, tal como se define en la tabla siguiente.
En la tabla siguiente se describe el formato adecuado para definir tipos de campos escalares y tipos de campos más específicos mediante propiedades opcionales. Puede obtener más información sobre las propiedades opcionales y las palabras clave específicas del tipo a través de la documentación del Esquema JSON.
Para empezar, busque el tipo de campo deseado y utilice el código de muestra proporcionado para generar la solicitud de API para crear una mezcla o crear un tipo de datos.
Tipo deseado(meta:xdmType) JSON (Esquema JSON) Ejemplo de código
string type: stringPropiedades opcionales:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

uri (xdmType:string) type: formato de cadena: uri
        "sampleField": { "type": "string", "format": "uri" }
      

enum (xdmType: string) type: stringOptional, propiedad:
  • predeterminada
Especifique las etiquetas de opciones orientadas al cliente mediante "meta:enum":
        "sampleField": { "type": "string", "enum": [ "valor1", "valor2", "valor3" ], "meta:enum": { "value1": "Valor 1", "valor2": "Valor 2", "valor3": "Valor 3" }, "predeterminado": "value1" }
      

entero type: número mínimo: ±2,23 × 10^308 máximo: ±1,80 × 10^308
        "sampleField": { "type": "number" }
      

long type: entero máximo:2^53+1 mínimo:-2^53+1
        "sampleField": { "type": "integer", "Minimum": -9007199254740992, "máximo": 9007199254740992 }
      

int type: entero máximo:2^31 mínimo:-2^31
        "sampleField": { "type": "integer", "Minimum": -2147483648, "máximo": 2147483648 }
      

short type: entero máximo:2^15 mínimo:-2^15
        "sampleField": { "type": "integer", "Minimum": -32768, "máximo": 32768 }
      

byte type: entero máximo:2^7 mínimo:-2^7
        "sampleField": { "type": "integer", "Minimum": -128, "máximo": 128 }
      

Booleano type: boolean {true, false} Propiedad opcional:
  • predeterminada
        "sampleField": { "type": "boolean", "default": false }
      

date type: formato de cadena: date
        "sampleField": { "type": "string", "format": "date", "samples": ["2004-10-23"] }
      

Fecha tal como se define en RFC 3339, sección 5.6 , donde "full-date" = date-fullyear "-" date-month "-" date-mday (AAAA-MM-DD)
date-time type: formato de cadena: date-time
        "sampleField": { "type": "string", "format": "date-time", "ejemplos": ["2004-10-23T12:00:00-06:00"] }
      

Fecha y hora tal como se define en RFC 3339, sección 5.6 , donde "fecha y hora" = fecha completa "T" a tiempo completo: (AAAA-MM-DD'HH:MM:SS.SSX)
array type: array items.type se puede definir con cualquier tipo escalar:
        "sampleField": { "type": "array", "items": { "type": "string" } }
      

Matriz de objetos definida por otro esquema:
        "sampleField": { "type": "array", "items": { "$ref": "id" } }
      

Donde "id" es el {id} del esquema de referencia.
object type: object propiedades de contenidos.{field}.type se puede definir con cualquier tipo escalar:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } } }
      

Campo de tipo "objeto" definido por un esquema de referencia:
        "sampleField": { "type": "object", "$ref": "id" }
      

Donde "id" es el {id} del esquema de referencia.
map type: objectNota: El uso del tipo de datos 'map' está reservado para el uso de esquemas del sector y del proveedor y no está disponible para su uso en campos definidos por el inquilino. Se utiliza en esquemas estándar cuando los datos se representan como claves que se asignan a algún valor, o cuando las claves no pueden incluirse razonablemente en un esquema estático y deben tratarse como valores de datos. UN 'mapa' NO DEBE definir ninguna propiedad. DEBE definir un único esquema "[!UICONTROL extraProperties]" para describir el tipo de valores contenidos en el 'mapa'. Un 'mapa' en XDM puede contener un solo tipo de datos. Los valores pueden ser cualquier definición de esquema XDM válida, incluyendo una matriz o un objeto, o como referencia a otro esquema (mediante $ref). Campo de mapa con valores de tipo 'string':
        "sampleField": { "type": "object", "extraProperties":{ "type": "string" } }
      

Campo de asignación con valores como matriz de cadenas:
        "sampleField": { "type": "object", "extraProperties":{ "type": "array", "items": { "type": "string" } } } }
      

Campo de mapa que hace referencia a otro esquema:
        "sampleField": { "type": "object", "extraProperties":{ "$ref": "id" } }
      

Donde "id" es el {id} del esquema de referencia.