Les types de champs XDM que vous sélectionnez pour vos schémas limitent les types de données que ces champs peuvent contenir. Ce document fournit une vue d’ensemble de chaque type de champ principal, y compris les autres formats de sérialisation auxquels ils peuvent être mappés, ainsi que la manière de définir vos propres types de champ dans l’API afin d’appliquer différentes contraintes.
Avant d'utiliser ce guide, veuillez examiner les bases de la composition des schémas pour une introduction aux schémas, classes et mixins XDM.
Si vous prévoyez de définir vos propres types de champs, il est vivement recommandé de début avec le guide de développement du registre des Schémas pour savoir comment créer des mixins et des types de données pour inclure vos champs personnalisés dans.
The table below describes the mapping between each XDM type (meta:xdmType
) and other serialization formats.
Type XDM (meta:xdmType) |
JSON (schéma JSON) |
Parquet (type/annotation) |
Spark SQL | Java | Scala | .NET | CosmosDB | MongoDB | Aerospike | Protobuf 2 |
---|---|---|---|---|---|---|---|---|---|---|
string | type : chaîne | BYTE_ARRAY/UTF8 | StringType | java.lang.String | Chaîne | System.String | Chaîne | string | Chaîne | string |
nombre | type : nombre | DOUBLE | DoubleType | java.lang.Double | Double | System.Double | Nombre | double | Double | double |
long | type : entier maximum : 2^53+1 minimum : -2^53+1 |
INT64 | LongType | java.lang.Long | Long | System.Int64 | Nombre | long | Entier | int64 |
int | type : entier maximum : 2^31 minimum : -2^31 |
INT32/INT_32 | IntegerType | java.lang.Integer | Int | System.Int32 | Nombre | int | Entier | int32 |
court | type : entier maximum : 2^15 minimum : -2^15 |
INT32/INT_16 | ShortType | java.lang.Short | Court | System.Int16 | Nombre | int | Entier | int32 |
byte | type : entier maximum : 2^7 minimum : -2^7 |
INT32/INT_8 | ByteType | java.lang.Short | Octet | System.SByte | Nombre | int | Entier | int32 |
boolean | type : booléen | BOOLEAN | BooleanType | java.lang.Boolean | Booléen | System.Boolean | Booléen | bool | Entier | Entier |
date | type : chaîne format : date (RFC 3339, section 5.6) |
INT32/DATE | DateType | java.util.Date | java.util.Date | System.DateTime | Chaîne | date | Entier (unix millis) |
int64 (unix millis) |
date-time | type : chaîne format : date-time (RFC 3339, section 5.6) |
INT64/TIMESTAMP_MILLIS | TimestampType | java.util.Date | java.util.Date | System.DateTime | Chaîne | timestamp | Entier (unix millis) |
int64 (unix millis) |
map | objet | Groupe annoté MAP <key_type> DOIT être STRING <value_type> type de valeurs de correspondance |
MapType "keyType" DOIT être StringType "valueType" est le type de valeurs de correspondance. |
java.util.Map | Map | — | objet | objet | map | map<key_type, value_type> |
XDM schemas are defined using JSON Schema standards and basic field types, with additional constraints for field names which are enforced by Experience Platform. The Schema Registry API allows you to define additional field types through the use of formats and optional constraints. XDM field types are exposed by the field-level attribute, meta:xdmType
.
meta:xdmType
est une valeur générée par le système, vous n’êtes donc pas obligé d’ajouter cette propriété au JSON de votre champ. Il est recommandé d’utiliser les types de schémas JSON (comme la chaîne et l’entier) avec les contraintes min/max appropriées définies dans le tableau ci-dessous.
Le tableau suivant souligne la mise en forme appropriée pour définir les types de champs scalaires et les types de champs plus spécifiques à l’aide de propriétés facultatives. Pour plus d’informations sur les propriétés facultatives et les mots-clés spécifiques au type, consultez la documentation des schémas JSON.
Pour commencer, recherchez le type de champ souhaité et utilisez l’exemple de code fourni pour générer votre demande d’API pour créer un mixin ou créer un typede données.
Type souhaité (meta:xdmType) |
JSON (schéma JSON) |
Exemple de code |
---|---|---|
chaîne | type : chaîne Propriétés facultatives :
|
"sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 } |
uri (xdmType:string) |
type : chaîne format : uri |
"sampleField": { "type": "string", "format": "uri" } |
enum (xdmType: string) |
type : chaîne Propriété facultative :
|
Précisez les étiquettes d’option côté client à l’aide de « meta:enum » :
"sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Value 1", "value2": "Value 2", "value3": "Value 3" }, "default": "value1" } |
nombre | type : nombre minimum : ±2,23×10^308 maximum : ±1,80×10^308 |
"sampleField": { "type": "number" } |
long | type : entier maximum : 2^53+1 minimum : -2^53+1 |
"sampleField": { "type": "integer", "minimum": -9007199254740992, "maximum": 9007199254740992 } |
int | type : entier maximum : 2^31 minimum : -2^31 |
"sampleField": { "type": "integer", "minimum": -2147483648, "maximum": 2147483648 } |
court | type : entier maximum : 2^15 minimum : -2^15 |
"sampleField": { "type": "integer", "minimum": -32768, "maximum": 32768 } |
octet | type : entier maximum : 2^7 minimum : -2^7 |
"sampleField": { "type": "entier", "minimum": -128, "maximum": 128 } |
booléen | type : booléen {true, false} Propriété facultative :
|
"sampleField": { "type": "boolean", "default": false } |
date | type : chaîne format : date |
"sampleField": { "type": "string", "format": "date", "examples": ["2004-10-23"] }Date définie par le RFC 3339, section 5.6, où "full-date" = date-fullyear "-" date-month "-" date-mday (YYYY-MM-DD) |
date-time | type : chaîne format : date-time |
"sampleField": { "type": "string", "format": "date-time", "examples": ["2004-10-23T12:00:00-06:00"] }Date-Time définie par le RFC 3339, section 5.6, où "date-time" = full-date "T" full-time: (YYYY-MM-DD'T'HH:MM:SS.SSSSX) |
tableau | type : tableau | Vous pouvez définir les items.type en utilisant n’importe quel type scalaire :
"sampleField": { "type": "array", "items": { "type": "string" } }Tableau d’objets défini par un autre schéma : "sampleField": { "type": "array", "items": { "$ref": "id" } }où « id » désigne l’{id} du schéma de référence. |
objet | type : propriétés | d’objets.{field}.type en utilisant n’importe quel type scalaire :
"sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } } }Le champ de type « objet » défini par un schéma de référence : "sampleField": { "type": "object", "$ref": "id" }où « id » désigne l’{id} du schéma de référence. |
map | type : objet Remarque : l’utilisation du type de données « map » est réservée à une utilisation par des schémas du secteur et des fournisseurs et n’est pas disponible à l’utilisation pour des champs définis par des clients. Ce type de données est utilisé dans des schémas standards lorsque les données sont représentées sous la forme de clés qui correspondent à certaines valeurs ou lorsque les clés ne peuvent pas raisonnablement être incluses dans un schéma statique et doivent être traitées comme valeur de données. |
Une « map » NE DOIT PAS définir de propriétés. Il DOIT définir un seul schéma "additionalProperties" pour décrire le type de valeurs contenues dans la 'map'. Dans XDM, une « map » ne peut contenir qu’un seul type de données. Les valeurs peuvent être tout type de définitions de schéma XDM, y compris un tableau ou un objet, ou sous la forme d’une référence à un autre schéma (via $ref). Faire correspond le champ avec des valeurs de type « champ » : "sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }Faire correspondre le champ avec des valeurs sous la forme d’un tableau de chaînes : "sampleField": { "type": "object", "additionalProperties":{ "type": "array", "items": { "type": "string" } } }Faire correspondre un champ qui fait référence à un autre schéma : "sampleField": { "type": "object", "additionalProperties":{ "$ref": "id" } }où « id » désigne l’{id} du schéma de référence. |