XDM-Feldtypeinschränkungen

In Experience Data Model-(XDM-)Schemas beschränkt der Feldtyp, welche Daten das Feld enthalten kann. Dieses Dokument bietet einen Überblick über die einzelnen Kernfeldtypen, einschließlich der anderen Serialisierungsformate, denen sie zugeordnet werden können, und wie Sie Ihre eigenen Feldtypen in der API definieren, um verschiedene Einschränkungen zu erzwingen.

Erste Schritte

Bevor Sie dieses Handbuch verwenden, lesen Sie bitte die Grundlagen der Schema-Komposition, um eine Einführung in XDM-Schemas, -Klassen und -Mixins zu erhalten.

Wenn Sie Ihre eigenen Feldtypen in der API definieren möchten, sollten Sie unbedingt mit dem Schema Registry-Entwicklerhandbuch Beginn haben, um zu erfahren, wie Mixins und Datentypen erstellt werden, die Ihre benutzerdefinierten Felder einschließen. Wenn Sie die Benutzeroberfläche für die Experience Platform verwenden, um Ihre Schema zu erstellen, lesen Sie das Handbuch zu Definieren von Feldern in der Benutzeroberfläche, um zu erfahren, wie Sie Einschränkungen für Felder implementieren, die Sie in benutzerdefinierten Mixins und Datentypen definieren.

Basisstruktur und Beispiele

XDM basiert auf dem JSON-Schema, und deshalb erben XDM-Felder eine ähnliche Syntax, wenn sie ihren Typ definieren. Wenn Sie wissen, wie verschiedene Feldtypen im JSON-Schema dargestellt werden, können Sie die Basisbeschränkungen der einzelnen Typen erkennen.

HINWEIS

Weitere Informationen zu JSON-Schemas und anderen zugrunde liegenden Technologien in Plattform-APIs finden Sie im Handbuch API-Grundlagen.

Die folgende Tabelle zeigt, wie jeder XDM-Typ im JSON-Schema dargestellt wird, zusammen mit einem Beispielwert, der dem Typ entspricht:

XDM-Typ JSON-Schema Beispiel
-Zeichenfolge
{"type": "string"}
"Platinum"
-Dublette
{"type": "number"}
12925.49
Long
{
  "type": "integer",
  "maximum": 9007199254740991,
  "minimum": -9007199254740991
}
1478108935
Integer
{
  "type": "integer",
  "maximum": 2147483648,
  "minimum": -2147483648
}
24906290
Short
{
  "type": "integer",
  "maximum": 32768,
  "minimum": -32768
}
15781
Byte
{
  "type": "integer",
  "maximum": 128,
  "minimum": -128
}
90
-Datum*
{
  "type": "string",
  "format": "date"
}
"2019-05-15"
DateTime*
{
  "type": "string",
  "format": "date-time"
}
"2019-05-15T20:20:39+00:00"
Boolean
{"type": "string"}
true

*Alle datumsformatierten Zeichenfolgen müssen dem ISO 8601-Standard (RFC 3339, Abschnitt 5.6) entsprechen.

Zuordnen von XDM-Typen zu anderen Formaten

Die folgenden Abschnitte beschreiben, wie jeder XDM-Typ anderen gängigen Serialisierungsformaten zugeordnet wird:

WICHTIG

Unter den in den Tabellen unten aufgeführten Standard-XDM-Typen ist auch der Typ Map enthalten. Karten werden in Standard-Schemas verwendet, wenn Daten als Schlüssel dargestellt werden, die bestimmten Werten zugeordnet sind, oder wenn Schlüssel vernünftigerweise nicht in ein statisches Schema eingeschlossen werden können und als Datenwerte behandelt werden müssen.

Kartenfelder sind für die Verwendung von Schemas der Industrie und des Anbieters reserviert und können daher nicht in von Ihnen definierten benutzerdefinierten Ressourcen verwendet werden. Die Aufnahme des Map-Typs in die folgenden Tabellen soll Ihnen nur bei der Bestimmung helfen, wie Sie Ihre vorhandenen Daten XDM zuordnen, wenn sie derzeit in einem der unten aufgeführten Formate gespeichert sind.

Parquet, Spark SQL und Java

XDM-Typ Parkett Spark SQL Java
Zeichenfolge Typ: BYTE_ARRAY
Anmerkung: UTF8
StringType java.lang.String
Double Typ: DOUBLE LongType java.lang.Double
Lang Typ: INT64 LongType java.lang.Long
Ganzzahl Typ: INT32
Anmerkung: INT_32
IntegerType java.lang.Integer
Kurz Typ: INT32
Anmerkung: INT_16
ShortType java.lang.Short
Byte Typ: INT32
Anmerkung: INT_8
ByteType java.lang.Short
Datum Typ: INT32
Anmerkung: DATE
DateType java.util.Date
DateTime Typ: INT64
Anmerkung: TIMESTAMP_MILLIS
TimestampType java.util.Date
Boolesch Typ: BOOLEAN BooleanType java.lang.Boolean
Landkarte MAP-kommentierte Gruppe

(<key-type> muss STRINGsein)
MapType

(keyType muss StringType)
java.util.Map

Scala, .NET und CosmosDB

XDM-Typ Scala .NET CosmosDB
Zeichenfolge String System.String String
Dublette Double System.Double Number
Lang Long System.Int64 Number
Ganzzahl Int System.Int32 Number
Kurz Short System.Int16 Number
Byte Byte System.SByte Number
Datum java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
Boolesch Boolean System.Boolean Boolean
Landkarte Map (Nicht angegeben) object

MongoDB, Aerospike und Protobuf 2

XDM-Typ MongoDB Aerospike Protobuf 2
Zeichenfolge string String string
Dublette double Double double
Lang long Integer int64
Ganzzahl int Integer int32
Kurz int Integer int32
Byte int Integer int32
Datum date Integer
(Unix Millisekunden)
int64
(Unix Millisekunden)
DateTime timestamp Integer
(Unix Millisekunden)
int64
(Unix Millisekunden)
Boolesch bool Integer
(0/1 binär)
bool
Landkarte object map map<key_type, value_type>

Definieren von XDM-Feldtypen in der API

Alle XDM-Felder werden mit den standardmäßigen Einschränkungen JSON-Schema definiert, die für den jeweiligen Feldtyp gelten, mit zusätzlichen Einschränkungen für Feldnamen, die von Experience Platform erzwungen werden. Mit der Schema Registry API können Sie zusätzliche Feldtypen mithilfe von Formaten und optionalen Einschränkungen definieren. XDM-Feldtypen werden durch das Attribut auf Feldebene, meta:xdmType, verfügbar gemacht.

HINWEIS

meta:xdmType ist ein vom System generierter Wert. Daher müssen Sie diese Eigenschaft nicht zum JSON für Ihr Feld hinzufügen, wenn Sie die API verwenden. Es empfiehlt sich, JSON-Schema-Typen (z. B. string und integer) mit den entsprechenden Min-/Max-Einschränkungen zu verwenden, wie in der folgenden Tabelle definiert.

In der folgenden Tabelle sind die entsprechenden Formatierungen zur Definition verschiedener Feldtypen, einschließlich derjenigen mit optionalen Eigenschaften, aufgeführt. Weitere Informationen zu optionalen Eigenschaften und typspezifischen Suchbegriffen finden Sie in der Dokumentation zum JSON-Schema.

Suchen Sie zunächst den gewünschten Feldtyp und verwenden Sie den Beispielcode, der zum Erstellen Ihrer API-Anforderung für Erstellen einer Mischung oder zum Erstellen eines Datentyps bereitgestellt wird.

XDM-Typ Optionale Eigenschaften Beispiel
-Zeichenfolge
  • pattern
  • minLength
  • maxLength
"sampleField": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2
}
-URI
"sampleField": {
          "type": "string",
          "format": "uri"
}
Enum
  • default
  • meta:enum
Eingeschränkte Enum-Werte werden unter dem Array enum bereitgestellt, während optionale kundenorientierte Beschriftungen für jeden Wert unter meta:enum bereitgestellt werden können:
"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
}
Integer
"sampleField": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483648
}
Short
"sampleField": {
          "type": "integer",
          "minimum": -32768,
          "maximum": 32768
}
Byte
"sampleField": {
          "type": "integer",
          "minimum": -128,
          "maximum": 128
  }
Boolean
  • default
"sampleField": {
          "type": "boolean",
          "default": false
}
-Datum
"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 Ein Array mit einfachen Skalartypen (z. B. Zeichenfolgen):
"sampleField": {
          "type": "array",
          "items": {
            "type": "string"
  }
}
Ein Array von Objekten, die durch ein anderes Schema definiert werden:
"sampleField": {
  "type": "array",
  "Elemente": {
    "$ref": "https://ns.adobe.com/xdm/data/paymentitem"
  }
}
-Objekt Das type-Attribut jedes unter properties definierten Unterfelds kann mit einem beliebigen Skalartyp definiert werden:
"sampleField": {
          "type": "object",
          "properties": {
            "field1": {
              "type": "string"
            },
            "field2": {
              "type": "number"
    }
  }
}
Objekttypfelder können durch Verweis auf den Datentyp $id definiert werden:
"sampleField": {
  "type": "object",
  "$ref": "https://ns.adobe.com/xdm/common/phoneinteraction"
}
Map Eine Map darf keine Eigenschaften definieren. muss ein einzelnes additionalProperties-Schema definieren, um den Werttyp zu beschreiben, der in der Zuordnung enthalten ist (jede Zuordnung kann nur einen einzigen Datentyp enthalten). Werte können ein beliebiges gültiges XDM type-Attribut oder ein Verweis auf ein anderes Schema mit einem $ref-Attribut sein.

Ein Zuordnungsfeld mit Zeichenfolgentypwerten:
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "string"
  }
}
Ein Zuordnungsfeld mit Zeichenfolgen-Arrays für Werte:
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "array",
            "items": {
              "type": "string"
    }
  }
}
Ein Zuordnungsfeld, das auf einen anderen Datentyp verweist:
"sampleField": {
  "type": "object",
  "additionalProperties":{
    "$ref": "https://ns.adobe.com/xdm/data/paymentitem"
  }
}

Auf dieser Seite

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