Restrições de tipo de campo XDM

Os tipos de campo XDM selecionados para seus schemas restringem quais tipos de dados esses campos podem conter. Este documento fornece uma visão geral de cada tipo de campo principal, incluindo os outros formatos de serialização para os quais eles 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, reveja as noções básicas da composição do schema para obter uma introdução aos schemas, classes e combinações XDM.

Se você planeja definir seus próprios tipos de campo, é altamente recomendável que você start o guia do desenvolvedor do Registro de Schemas para saber como criar combinações e tipos de dados para incluir seus campos personalizados.

Mapeamento de tipos XDM para outros formatos

A tabela abaixo descreve o mapeamento entre cada tipo (meta:xdmType) de XDM e outros formatos de serialização.

Tipo
XDM(meta:xdmType)
JSON
(Schema JSON)
Parquet
(tipo/anotação)
Spark SQL Java Scala .NET CosmosDB MongoDB Aerospie Protobuf 2
string tipo:string BYTE_ARRAY/UTF8 StringType java.lang.String String System.String String string String string
número tipo:número DUPLO DoubleType java.lang.Double Duplo System.Double Número duplo Duplo duplo
long tipo:
número inteiro máximo:253+1<br>mínimo:-253+1
INT64 LongType java.lang.Long Longo System.Int64 Número long Número inteiro int64
int type:
integermaximum:231<br>mínimo:-231
INT32/INT_32 IntegerType java.lang.Integer Int System.Int32 Número int Número inteiro int32
short type:
integermaximum:215<br>mínimo:-215
INT32/INT_16 ShortType java.lang.Short Curto System.Int16 Número int Número inteiro int32
byte type:
integermaximum:27<br>mínimo:-27
INT32/INT_8 ByteType java.lang.Short Byte System.SByte Número int Número inteiro int32
booleano tipo:booleano BOOLEANO BooleanType java.lang.Boolean Booleano System.Boolean Booleano bool Número inteiro Número inteiro
data type:
stringformat:date
(RFC 3339, seção 5.6)
INT32/DATE DateType java.util.Date java.util.Date System.DateTime String data Inteiro
(unix millis)
int64
(unix millis)
data e hora type:
stringformat:date-time
(RFC 3339, seção 5.6)
INT64/TIMESTAMP_MILLIS TimestampType java.util.Date java.util.Date System.DateTime String carimbo de data e hora Inteiro
(unix millis)
int64
(unix millis)
mapa objeto O grupo

anotado MAP<key_type> DEVE ser STRING

<value_type> do tipo de valores de mapa
MapType

"keyType" DEVE ser StringType

"valueType" é o tipo de valores de mapa.
java.util.Map Mapa objeto objeto mapa map<key_type, value_type>

Definição de tipos de campos XDM na API

Os schemas XDM são definidos usando padrões de Schema JSON e tipos de campo básicos, com restrições adicionais para nomes de campo que são impostas por Experience Platform. A API de Registro de Schemas permite que você defina tipos de campos adicionais usando formatos e restrições opcionais. Os tipos de campos XDM são expostos pelo atributo de nível de campo, meta:xdmType.

OBSERVAÇÃO

meta:xdmType é um valor gerado pelo sistema e, portanto, não é necessário adicionar essa propriedade ao JSON para seu campo. A prática recomendada é usar tipos de Schemas JSON (como string e integer) com as restrições mín/máx apropriadas, conforme definido na tabela abaixo.

A tabela a seguir descreve a formatação apropriada para definir tipos de campos escalares e tipos de campos mais específicos usando propriedades opcionais. Mais informações sobre propriedades opcionais e palavras-chave específicas do tipo estão disponíveis na documentação do SchemaJSON.

Para começar, localize o tipo de campo desejado e use o código de amostra fornecido para criar sua solicitação de API para criar uma mistura ou criar um tipode dados.

Tipo
desejado(meta:xdmType)
JSON
(Schema JSON)
Amostra de código
string tipo: propriedades

stringOptional:
  • padrão
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      
uri
(xdmType:string)
tipo: formato
de string: uri
        "sampleField": { "type": "string", "format": "uri" }
      
enum
(xdmType: string)
tipo: propriedade

stringOptional:
  • default
Especifique rótulos de opção voltados para o cliente usando "meta:enum":
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Valor 1", "valor 2": "Valor 2", "valor3": "Valor 3" }, "padrão": "value1" }
      
número tipo:
número mínimo: ±2,23×10^308
máximo: ±1,80×10^308
        "sampleField": { "type": "number" }
      
long tipo: número
inteiro máximo:2^53+1
mínimo:-2^53+1
        "sampleField": { "type": "número inteiro", "mínimo": -9007199254740992, "máximo": 9007199254740992 }
      
int tipo: número
inteiro máximo:2^31
mínimo:-2^31
        "sampleField": { "type": "número inteiro", "mínimo": -2147483648, "máximo": 2147483648 }
      
short tipo: número
inteiro máximo:2^15
mínimo:-2^15
        "sampleField": { "type": "número inteiro", "mínimo": -32768, "máximo": 32768 }
      
byte tipo: número
inteiro máximo:2^7
mínimo:-2^7
        "sampleField": { "type": "número inteiro", "mínimo": -128, "máximo": 128 }
      
booleano
tipo: propriedade boolean
{true, false}

Opcional:
  • default
        "sampleField": { "type": "booleano", "padrão": false }
      
data tipo: formato
de string: date
        "sampleField": { "type": "string", "format": "data", "exemplos": ["2004-10-23"] }
      
Data definida pela RFC 3339, seção 5.6, em que "data completa" = data-limite "-" data-mês "-" data-dia (AAAA-MM-DD)
data e hora tipo: formato
de string: data e hora
        "sampleField": { "type": "string", "format": "date-time", "exemplos": ["2004-10-23T12:00:00-06:00"] }
      
Data e hora, conforme definido pela seção 5.6 daRFC 3339, em que "data e hora" = data completa "T" em tempo integral:
(AAAA-MM-DD'T'HH:MM:SS.SSSSX)
matriz tipo: matriz items.type pode ser definido usando qualquer tipo escalar:
        "sampleField": { "type": "array", "items": { "type": "string" } }
      
Matriz de objetos definidos por outro schema:
        "sampleField": { "type": "array", "items": { "$ref": "id" }
      
Onde "id" é o {id} do schema de referência.
objeto tipo: objeto de mídia.{field}.type pode ser definido usando qualquer tipo escalar:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } }
      
Campo do tipo "objeto" definido por um schema de referência:
        "sampleField": { "type": "object", "$ref": "id" }
      
Onde "id" é o {id} do schema de referência.
mapa tipo:

objectNote:
o uso do tipo de dados 'map' é reservado para uso pelo setor e pelo schema do fornecedor e não está disponível para uso em campos definidos pelo locatário. É usado em schemas padrão quando os dados são representados como chaves que mapeiam para algum valor, ou quando as chaves não podem ser incluídas em um schema estático e devem ser tratadas como valores de dados.
UM 'mapa' NÃO DEVE definir nenhuma propriedade. Ele DEVE definir um único schema "additionalProperties" para descrever o tipo de valores contidos no 'map'. Um "mapa" no XDM pode conter apenas um único tipo de dados. Os valores podem ser qualquer definição válida de schema XDM, incluindo uma matriz ou um objeto, ou como referência a outro schema (via $ref).

Mapear campo com valores do tipo 'string':
        "sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }
      
Mapear campo com valores sendo uma matriz de sequências de caracteres:
        "sampleField": { "type": "object", "additionalProperties":{ "type": "array", "items": { "type": "string" } }
      
Campo de mapa que faz referência a outro schema:
        "sampleField": { "type": "object", "additionalProperties":{ "$ref": "id" }
      
Onde "id" é o {id} do schema de referência.

Nesta página