Contraintes de type de champ XDM

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.

Prise en main

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.

Faire correspondre les types XDM à d’autres formats

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>

Définition des types de champ XDM dans l’API

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.

REMARQUE

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 :
  • pattern
  • minLength
  • maxLength
        "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 :
  • par défaut
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 :
  • par défaut
        "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.

Sur cette page