Restrições do tipo de campo XDM

Nos esquemas do Experience Data Model (XDM), o tipo de campo restringe o tipo de dados que o campo pode conter. Este documento fornece uma visão geral de cada tipo de campo principal, incluindo os outros formatos de serialização para os quais podem ser mapeados e como definir seus próprios tipos de campo na API para impor restrições diferentes.

Introdução

Antes de usar este guia, revise as noções básicas da composição do schema para obter uma introdução a esquemas XDM, classes e grupos de campos de esquema.

Se você planeja definir seus próprios tipos de campo na API, é altamente recomendável começar com o Guia do desenvolvedor do Registro de Schema para saber como criar grupos de campo e tipos de dados para incluir seus campos personalizados. Se você estiver usando a interface do usuário do Experience Platform para criar seus esquemas, consulte o guia sobre definição de campos na interface do usuário para saber como implementar restrições em campos definidos em grupos de campos personalizados e tipos de dados.

Estrutura básica e exemplos

O XDM é criado sobre o Esquema JSON e, portanto, os campos XDM herdam uma sintaxe semelhante ao definir seu tipo. Entender como diferentes tipos de campo são representados no Esquema JSON pode ajudar a indicar as restrições básicas de cada tipo.

OBSERVAÇÃO

Consulte o Guia de fundamentos da API para obter mais informações sobre o Esquema JSON e outras tecnologias subjacentes nas APIs da plataforma.

A tabela a seguir descreve como cada tipo de XDM é representado no Esquema JSON, juntamente com um exemplo de valor que está em conformidade com o tipo :

Tipo XDM Esquema JSON Exemplo
String
{"type": "string"}
"Platinum"
Duplo
{"type": "número"}
12925.49
Longo
{
  "type": "integer",
  "máximo": 9007199254740991,
  "mínimo": -9007199254740991
}
1478108935
Número inteiro
{
  "type": "integer",
  "máximo": 2147483648,
  "mínimo": -2147483648
}
24906290
Curto
{
  "type": "integer",
  "máximo": 32768
  "mínimo": -32768
}
15781
Byte
{
  "type": "integer",
  "máximo": 128,
  "mínimo": -128
}
90
Data*
{
  "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 as cadeias de caracteres formatadas por data devem estar em conformidade com o padrão ISO 8601 (RFC 3339, seção 5.6).

Mapeamento de tipos XDM para outros formatos

As seções abaixo descrevem como cada tipo XDM mapeia para outros formatos de serialização comuns:

IMPORTANTE

Entre os tipos XDM padrão listados nas tabelas abaixo, o tipo Map também é incluído. Os mapas são usados em esquemas padrão quando os dados são representados como chaves que mapeiam para determinados valores ou quando as chaves não podem razoavelmente ser incluídas em um schema estático e devem ser tratadas como valores de dados.

Os campos do tipo mapa são reservados para uso do setor e do schema do fornecedor e, portanto, não podem ser usados em recursos personalizados definidos por você. A inclusão do tipo de mapa nas tabelas abaixo destina-se apenas a ajudar você a determinar como mapear os dados existentes para XDM se eles estiverem armazenados atualmente em qualquer um dos formatos listados abaixo.

Parquet, Spark SQL e Java

Tipo XDM Parquet SQL Spark Java
String Tipo: BYTE_ARRAY
Anotação: UTF8
StringType java.lang.String
Duplo Tipo: DOUBLE LongType java.lang.Double
Longo Tipo: INT64 LongType java.lang.Long
Número inteiro Tipo: INT32
Anotação: INT_32
IntegerType java.lang.Integer
Curto Tipo: INT32
Anotação: INT_16
ShortType java.lang.Short
Byte Tipo: INT32
Anotação: INT_8
ByteType java.lang.Short
Data Tipo: INT32
Anotação: DATE
DateType java.util.Date
DateTime Tipo: INT64
Anotação: TIMESTAMP_MILLIS
TimestampType java.util.Date
Booleano Tipo: BOOLEAN BooleanType java.lang.Boolean
Mapa MAP-grupo anotado

(<key-type> deve ser STRING)
MapType

(keyType deve ser StringType)
java.util.Map

Scala, .NET e CosmosDB

Tipo XDM Scala .NET CosmosDB
String String System.String String
Duplo Double System.Double Number
Longo Long System.Int64 Number
Número inteiro Int System.Int32 Number
Curto Short System.Int16 Number
Byte Byte System.SByte Number
Data 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 e Protobuf 2

Tipo XDM MongoDB Aerospike Protobuf 2
String string String string
Duplo double Double double
Longo long Integer int64
Número inteiro int Integer int32
Curto int Integer int32
Byte int Integer int32
Data date Integer
(Milissegundos do Unix)
int64
(Milissegundos do Unix)
DateTime timestamp Integer
(Milissegundos do Unix)
int64
(Milissegundos do Unix)
Booleano bool Integer
(0/1 binário)
bool
Mapa object map map<key_type, value_type>

Definição de tipos de campo XDM na API

Todos os campos XDM são definidos usando as restrições padrão JSON Schema que se aplicam ao tipo de campo, com restrições adicionais para nomes de campo que são impostas por Experience Platform. A API de Registro de Esquema permite definir tipos de campo adicionais por meio do uso de formatos e restrições opcionais. Os tipos de campo XDM são expostos pelo atributo de nível de campo, meta:xdmType.

OBSERVAÇÃO

meta:xdmType é um valor gerado pelo sistema e, portanto, você não é obrigado a adicionar essa propriedade ao JSON do seu campo ao usar a API. A prática recomendada é usar os tipos de Esquema JSON (como string e integer) com as restrições mínimas/máximas apropriadas, conforme definido na tabela abaixo.

A tabela a seguir descreve a formatação apropriada para definir tipos de campos diferentes, incluindo aqueles com propriedades opcionais. Mais informações sobre propriedades opcionais e palavras-chave específicas do tipo estão disponíveis na documentação do Esquema JSON.

Para começar, encontre o tipo de campo desejado e use o código de amostra fornecido para criar sua solicitação de API para criar um grupo de campos ou criar um tipo de dados.

Tipo XDM Propriedades opcionais Exemplo
String
  • pattern
  • minLength
  • maxLength
"sampleField": {
    "type": "string",
    "padrão": "^[A-Z]{2}$",
    "maxLength": 2
}
URI
"sampleField": {
  "type": "string",
  "format": "uri"
}
Enum
  • default
  • meta:enum
Os valores de enum restritos são fornecidos sob a matriz enum, enquanto rótulos opcionais voltados para o cliente para cada valor podem ser fornecidos em meta:enum:
"sampleField": {
  "type": "string",
  "enum": [
      "value1",
      "value2",
      "value3"
  ],
  "meta:enum": {
      "value1": "Valor 1",
      "value2": "Valor 2",
      "value3": "Valor 3"
  },
  "default": "value1"
}
Número
"sampleField": {
  "type": "número"
}
Longo
"sampleField": {
  "type": "integer",
  "mínimo": -9007199254740992,
  "máximo": 9007199254740992
}
Número inteiro
"sampleField": {
  "type": "integer",
  "mínimo": -2147483648,
  "máximo": 2147483648
}
Curto
"sampleField": {
  "type": "integer",
  "mínimo": -32768
  "máximo": 32768
}
Byte
"sampleField": {
  "type": "integer",
  "mínimo": -128,
  "máximo": 128
  }
Boolean
  • default
"sampleField": {
  "type": "booleano",
  "default": false
}
Data
"sampleField": {
  "type": "string",
  "format": "date",
  "exemplos": ["2004-10-23"]
}
DateTime
"sampleField": {
  "type": "string",
  "format": "date-time",
  "exemplos": ["2004-10-23T12:00:00-06:00"]
}
Array Uma matriz de tipos escalares básicos (por exemplo, strings):
"sampleField": {
  "type": "array",
  "itens": {
    "type": "string"
  }
}
Uma matriz de objetos definidos por outro schema:
"sampleField": {
  "type": "array",
  "itens": {
    "$ref": "https://ns.adobe.com/xdm/data/paymentitem"
  }
}
Objeto O atributo type de cada subcampo definido em properties pode ser definido usando qualquer tipo escalar:
"sampleField": {
  "type": "object",
  "properties": {
    "field1": {
      "type": "string"
    },
    "field2": {
      "type": "número"
    }
  }
}
Os campos do tipo de objeto podem ser definidos referenciando o $id de um tipo de dados:
"sampleField": {
  "type": "object",
  "$ref": "https://ns.adobe.com/xdm/common/phoneinteraction"
}
Map Um mapa não deve definir quaisquer propriedades. Ele deve definir um único schema additionalProperties para descrever o tipo de valores contidos no mapa (cada mapa só pode conter um único tipo de dados). Os valores podem ser qualquer atributo XDM type válido ou uma referência a outro esquema usando um atributo $ref.

Um campo de mapa com valores do tipo string:
"sampleField": {
  "type": "object",
  "additionalProperties":{
    "type": "string"
  }
}
Um campo de mapa com matrizes de sequências para valores:
"sampleField": {
  "type": "object",
  "additionalProperties":{
    "type": "array",
    "itens": {
      "type": "string"
    }
  }
}
Um campo de mapa que faz referência a outro tipo de dados:
"sampleField": {
  "type": "object",
  "additionalProperties":{
    "$ref": "https://ns.adobe.com/xdm/data/paymentitem"
  }
}

Nesta página