Contraintes de type de champ XDM

Dans les schémas du modèle de données d’expérience (XDM), le type d’un champ limite le type de données que le champ peut 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 et comment 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 consulter 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 dans l'API, il est vivement recommandé de début avec le guide du développeur du registre de Schémas pour savoir comment créer des mixins et des types de données pour inclure vos champs personnalisés dans. Si vous utilisez l’interface utilisateur de l’Experience Platform pour créer vos schémas, consultez le guide Définition des champs dans l’interface utilisateur pour savoir comment implémenter des contraintes sur les champs que vous définissez dans les mixins et types de données personnalisés.

Structure de base et exemples

XDM est créé sur le Schéma JSON et les champs XDM héritent donc d’une syntaxe similaire lors de la définition de leur type. Comprendre comment les différents types de champs sont représentés dans le Schéma JSON peut aider à indiquer les contraintes de base de chaque type.

REMARQUE

Pour plus d'informations sur le Schéma JSON et d'autres technologies sous-jacentes dans les API de plateformes, consultez le guide des fondamentaux de l'API.

Le tableau suivant décrit comment chaque type XDM est représenté dans le Schéma JSON, ainsi qu’un exemple de valeur conforme au type :

Type XDM Schéma JSON Exemple
String
{"type": "string"}
"Platinum"
Doublon
{"type": "number"}
12925.49
Long
{
  "type" : "integer",
  "maximum" : 9007199254740991,
  "minimum" : -9007199254740991
}
1478108935
Entier
{
  "type" : "integer",
  "maximum" : 2147483648,
  "minimum" : -2147483648
}
24906290
Short
{
  "type" : "integer",
  "maximum" : 32768,
  "minimum" : -32768
}
15781
Byte
{
  "type" : "integer",
  "maximum" : 128,
  "minimum" : -128
}
90
Date*
{
  "type" : "string",
  "format" : "date"
}
"2019-05-15"
DateTime*
{
  "type" : "string",
  "format" : "date-time"
}
"2019-05-15T20:20:39+00:00"
Boolean
{"type": "string"}
true

*Toutes les chaînes au format date doivent être conformes à la norme ISO 8601 (RFC 3339, section 5.6).

Faire correspondre les types XDM à d’autres formats

Les sections ci-dessous décrivent comment chaque type XDM est mappé à d’autres formats de sérialisation courants :

IMPORTANT

Parmi les types XDM standard répertoriés dans les tableaux ci-dessous, le type Map est également inclus. Les cartes sont utilisées dans les schémas standard 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 des valeurs de données.

Les champs de type de carte sont réservés à l’utilisation des schémas du secteur industriel et du fournisseur et ne peuvent donc pas être utilisés dans les ressources personnalisées que vous définissez. L’inclusion du type de mappage dans les tableaux ci-dessous ne vise qu’à vous aider à déterminer comment mapper vos données existantes à XDM si elles sont actuellement stockées dans l’un des formats répertoriés ci-dessous.

Parquet, Spark SQL et Java

Type XDM Parquet Spark SQL Java
Chaîne Type : BYTE_ARRAY
Annotation : UTF8
StringType java.lang.String
Double Type : DOUBLE LongType java.lang.Double
Long Type : INT64 LongType java.lang.Long
Entier Type : INT32
Annotation : INT_32
IntegerType java.lang.Integer
Court Type : INT32
Annotation : INT_16
ShortType java.lang.Short
Octet Type : INT32
Annotation : INT_8
ByteType java.lang.Short
Date Type : INT32
Annotation : DATE
DateType java.util.Date
DateTime Type : INT64
Annotation : TIMESTAMP_MILLIS
TimestampType java.util.Date
Booléen Type : BOOLEAN BooleanType java.lang.Boolean
Carte MAP-groupe

annoté(<key-type> doit être STRING)
MapType

(keyType doit être StringType)
java.util.Map

Scala, .NET et CosmosDB

Type XDM Scala .NET CosmosDB
Chaîne String System.String String
Doublon Double System.Double Number
Long Long System.Int64 Number
Entier Int System.Int32 Number
Court Short System.Int16 Number
Octet Byte System.SByte Number
Date java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
Booléen Boolean System.Boolean Boolean
Carte Map (N/A) object

MongoDB, Aerospike et Protobuf 2

Type XDM MongoDB Aerospike Protobuf 2
Chaîne string String string
Doublon double Double double
Long long Integer int64
Entier int Integer int32
Court int Integer int32
Octet int Integer int32
Date date Integer
(Unix millisecondes)
int64
(Unix millisecondes)
DateTime timestamp Integer
(Unix millisecondes)
int64
(Unix millisecondes)
Booléen bool Integer
(binaire 0/1)
bool
Carte object map map<key_type, value_type>

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

Tous les champs XDM sont définis à l'aide des contraintes Schéma JSON standard qui s'appliquent à leur type de champ, avec des contraintes supplémentaires pour les noms de champ qui sont appliqués par Experience Platform. L'API Schéma Registry vous permet de définir d'autres types de champs en utilisant des formats et des contraintes facultatives. Les types de champ XDM sont exposés par l'attribut de niveau champ, meta:xdmType.

REMARQUE

meta:xdmType est une valeur générée par le système. Par conséquent, vous n’êtes pas tenu d’ajouter cette propriété au fichier JSON pour votre champ lors de l’utilisation de l’API. Il est recommandé d’utiliser des types de Schéma JSON (tels que string et integer) avec les contraintes min/max appropriées, comme défini dans le tableau ci-dessous.

Le tableau suivant décrit la mise en forme appropriée pour définir différents types de champs, y compris ceux qui présentent des 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 type de données.

Type XDM Propriétés facultatives Exemple
String
  • pattern
  • minLength
  • maxLength
"sampleField": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2
}
URI
"sampleField": {
          "type": "string",
          "format": "uri"
}
Enum
  • default
  • meta:enum
Les valeurs d'énumération contraintes sont fournies sous la baie enum, tandis que les étiquettes facultatives destinées aux clients pour chaque valeur peuvent être fournies sous meta:enum :
"sampleField": {
          "type": "string",
          "enum": [
              "value1",
              "value2",
              "value3"
          ],
          "meta:enum": {
              "value1": "Value 1",
              "value2": "Value 2",
              "value3": "Value 3"
          },
          "default": "value1"
}
Number
"sampleField": {
          "type": "number"
}
Long
"sampleField": {
          "type": "integer",
          "minimum": -9007199254740992,
          "maximum": 9007199254740992
}
Entier
"sampleField": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483648
}
Short
"sampleField": {
          "type": "integer",
          "minimum": -32768,
          "maximum": 32768
}
Byte
"sampleField": {
          "type": "entier",
          "minimum": -128,
          "maximum": 128
  }
Boolean
  • default
"sampleField": {
          "type": "boolean",
          "default": false
}
Date
"sampleField": {
          "type": "string",
          "format": "date",
          "examples": ["2004-10-23"]
}
DateTime
"sampleField": {
          "type": "string",
          "format": "date-time",
          "examples": ["2004-10-23T12:00:00-06:00"]
}
Array Tableau de types scalaires de base (chaînes, par exemple) :
"sampleField": {
          "type": "array",
          "items": {
            "type": "string"
  }
}
Tableau d'objets défini par un autre schéma :
"sampleField" : {
  "type" : "array",
  "items" : {
    "$ref" : "https://ns.adobe.com/xdm/data/paymentitem"
  }
}
, objet L'attribut type de chaque sous-champ défini sous properties peut être défini à l'aide de n'importe quel type scalaire :
"sampleField": {
          "type": "object",
          "properties": {
            "field1": {
              "type": "string"
            },
            "field2": {
              "type": "number"
    }
  }
}
Les champs de type objet peuvent être définis en référençant le $id d'un type de données :
"sampleField" : {
  "type" : "object",
  "$ref" : "https://ns.adobe.com/xdm/common/phoneinteraction"
}
Map Un mappage 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 le mappage (chaque mappage ne peut contenir qu’un seul type de données). Les valeurs peuvent être n'importe quel attribut XDM type valide ou une référence à un autre schéma à l'aide d'un attribut $ref.

Un champ de mappage avec des valeurs de type chaîne :
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "string"
  }
}
Un champ de mappage avec des tableaux de chaînes pour les valeurs :
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "array",
            "items": {
              "type": "string"
    }
  }
}
Un champ de mappage qui référence un autre type de données :
"sampleField" : {
  "type" : "object",
  "additionalProperties":{
    "$ref" : "https://ns.adobe.com/xdm/data/paymentitem"
  }
}

Sur cette page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now