Vincoli del tipo di campo XDM

I tipi di campo XDM selezionati per gli schemi limitano il tipo di dati che tali campi possono contenere. Questo documento fornisce una panoramica di ciascun tipo di campo di base, compresi gli altri formati di serializzazione a cui è possibile mappare, e come definire i propri tipi di campo nell'API per applicare vincoli diversi.

Introduzione

Prima di utilizzare questa guida, vedere le nozioni di base della composizione dello schema per un'introduzione agli schemi, alle classi e ai mixin XDM.

Se si prevede di definire i propri tipi di campo, è consigliabile iniziare con la guida per gli sviluppatori del Registro di schema per apprendere come creare mixin e tipi di dati in cui includere i campi personalizzati.

Mappatura di tipi XDM ad altri formati

La tabella seguente descrive la mappatura tra ciascun tipo XDM (meta:xdmType) e altri formati di serializzazione.

XDM Type
(meta:xdmType)
JSON
(Schema JSON)
Parquet
(tipo/annotazione)
Spark SQL Java Scala .NET CosmosDB MongoDB Aerospike Protobuf 2
string type:string BYTE_ARRAY/UTF8 StringType java.lang.String Stringa System.String Stringa string Stringa string
numero type:number DOPPIO DoubleType java.lang.Double Doppio System.Double Numero double Doppio double
long tipo:
numero intero massimo:253+1<br>minimo:-253+1
INT64 LongType java.lang.Long Long System.Int64 Numero long Intero int64
int tipo:
numero intero massimo:231<br>minimo:-231
INT32/INT_32 IntegerType java.lang.Integer Int System.Int32 Numero int Intero int32
short tipo:
numero intero massimo:215<br>minimo:-215
INT32/INT_16 ShortType java.lang.Short Breve System.Int16 Numero int Intero int32
byte tipo:
numero intero massimo:27<br>minimo:-27
INT32/INT_8 ByteType java.lang.Short Byte System.SByte Numero int Intero int32
booleano type:boolean BOOLEANO BooleanType java.lang.Boolean Booleano System.Boolean Booleano boe Intero Intero
data type:
stringformat:date
(RFC 3339, sezione 5.6)
INT32/DATE DateType java.util.Date java.util.Date System.DateTime Stringa data Integer
(unix millis)
int64
(unix millis)
data-ora type:
stringformat:date-time
(RFC 3339, sezione 5.6)
INT64/TIMESTAMP_MILLIS TimestampType java.util.Date java.util.Date System.DateTime Stringa timestamp Integer
(unix millis)
int64
(unix millis)
map object MAP annotated group

<key_type> DEVE essere STRING

<value_type> tipo di valori mappa
MapType

"keyType" DEVE essere StringType

"valueType" è il tipo di valori della mappa.
java.util.Map Mappa object object map map<key_type, value_type>

Definizione dei tipi di campo XDM nell'API

Gli schemi XDM sono definiti utilizzando gli standard JSON Schema e i tipi di campo di base, con vincoli aggiuntivi per i nomi di campo che vengono applicati da Experience Platform. L'API del Registro di sistema dello schema consente di definire ulteriori tipi di campi mediante l'uso di formati e vincoli facoltativi. I tipi di campo XDM sono esposti dall'attributo a livello di campo meta:xdmType.

NOTA

meta:xdmType è un valore generato dal sistema e pertanto non è necessario aggiungere questa proprietà al JSON per il campo. Come procedura ottimale si consiglia di utilizzare tipi di schema JSON (come stringa e numero intero) con i vincoli min/max appropriati, come definito nella tabella seguente.

La tabella seguente delinea la formattazione appropriata per definire i tipi di campi scalari e i tipi di campi più specifici utilizzando le proprietà facoltative. Ulteriori informazioni sulle proprietà facoltative e sulle parole chiave specifiche per i tipi sono disponibili nella documentazione sullo schemaJSON.

Per iniziare, trova il tipo di campo desiderato e utilizza il codice di esempio fornito per creare la richiesta API per creare un mixin o creare un tipodi dati.

Tipo
desiderato (meta:xdmType)
JSON
(Schema JSON)
Esempio di codice
string type: Proprietà

stringOptional:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      
uri
(xdmType:string)
type: formato
stringa: uri
        "sampleField": { "type": "string", "format": "uri" }
      
enum
(xdmType: string)
type: Proprietà

stringOptional:
  • default
Specificate le etichette delle opzioni rivolte al cliente utilizzando "meta:enum":
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Valore 1", "valore2": "Valore 2", "valore3": "Value 3" }, "default": "value1" }
      
numero type: numero
minimo: ±2,23×10^308
massimo: ±1,80×10^308
        "sampleField": { "type": "number" }
      
long type: massimo
intero:2^53+1
minimo:-2^53+1
        "sampleField": { "type": "integer", "Minimum": -9007199254740992, "massimo": 9007199254740992 }
      
int type: massimo
intero:2^31
minimo:-2^31
        "sampleField": { "type": "integer", "Minimum": -2147483648, "massimo": 2147483648 }
      
short type: massimo
intero:2^15
minimo:-2^15
        "sampleField": { "type": "integer", "Minimum": -32768, "massimo": 32768 }
      
byte type: massimo
intero:2^7
minimo:-2^7
        "sampleField": { "type": "integer", "Minimum": -128, "massimo": 128 }
      
booleano
type: boolean
{true, false}

Proprietà facoltativa:
  • default
        "sampleField": { "type": "boolean", "default": false }
      
data type: formato
stringa: date
        "sampleField": { "type": "string", "format": "date", "example": ["2004-10-23"] }
      
Data come definita dalla RFC 3339, sezione 5.6, dove "data completa" = data-intero "-" data-mese "-" data-giorno (AAAA-MM-GG)
data-ora type: formato
stringa: data-ora
        "sampleField": { "type": "string", "format": "data-ora", "esempi": ["2004-10-23T12:00:00-06:00"] }
      
Data-ora, come definito dalla RFC 3339, sezione 5.6, dove "data-ora" = data completa "T" a tempo pieno:
(AAAA-MM-GG'T'HH:MM:SS.SSSSX)
array type: array items.type può essere definito utilizzando qualsiasi tipo scalare:
        "sampleField": { "type": "array", "items": { "type": "string" }
      
Array di oggetti definiti da un altro schema:
        "sampleField": { "type": "array", "items": { "$ref": "id" }
      
Dove "id" è il {id} dello schema di riferimento.
object type: object proprietà.{field}.type può essere definito utilizzando qualsiasi tipo scalare:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } }
      
Campo di tipo "oggetto" definito da uno schema di riferimento:
        "sampleField": { "type": "object", "$ref": "id" }
      
Dove "id" è il {id} dello schema di riferimento.
map type:

objectNota:
l'utilizzo del tipo di dati 'map' è riservato all'utilizzo dello schema del settore e del fornitore e non è disponibile per l'uso nei campi definiti dal tenant. Viene utilizzato negli schemi standard quando i dati sono rappresentati come chiavi che corrispondono a un certo valore, o quando le chiavi non possono essere incluse in uno schema statico e devono essere trattate come valori di dati.
UNA 'mappa' NON DEVE definire alcuna proprietà. DEVE definire un singolo schema "AdditionalProperties" per descrivere il tipo di valori contenuti nella 'map'. Una 'mappa' in XDM può contenere un solo tipo di dati. I valori possono essere una qualsiasi definizione di schema XDM valida, inclusa una matrice o un oggetto, o come riferimento a un altro schema (tramite $ref).

Campo mappa con valori di tipo 'stringa':
        "sampleField": { "type": "object", "AdditionalProperties":{ "type": "string" }
      
Mappa campo con valori che costituiscono un array di stringhe:
        "sampleField": { "type": "object", "AdditionalProperties":{ "type": "array", "items": { "type": "string" } } }
      
Campo mappa che fa riferimento a un altro schema:
        "sampleField": { "type": "object", "AdditionalProperties":{ "$ref": "id" }
      
Dove "id" è il {id} dello schema di riferimento.

In questa pagina