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.
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.
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> |
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
.
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:
|
"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:
|
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:
|
"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. |