XDM-Feldtypbegrenzungen

In Experience-Datenmodell (XDM)-Schemas beschränkt der Typ eines Felds, 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 Schemakomposition für eine Einführung in XDM-Schemas, Klassen und Schemafeldgruppen.

Wenn Sie Ihre eigenen Feldtypen in der API definieren möchten, wird dringend empfohlen, mit der Entwicklerhandbuch zur Schema Registry , um zu erfahren, wie Sie Feldergruppen und Datentypen erstellen, in die Ihre benutzerdefinierten Felder eingefügt werden. Wenn Sie zur Erstellung Ihrer Schemas die Experience Platform-Benutzeroberfläche verwenden, finden Sie im Handbuch unter Definieren von Feldern in der Benutzeroberfläche um zu erfahren, wie Sie Einschränkungen für Felder implementieren, die Sie in benutzerdefinierten Feldergruppen und Datentypen definieren.

Basisstruktur und Beispiele

XDM basiert auf dem JSON-Schema und daher erben XDM-Felder bei der Definition ihres Typs eine ähnliche Syntax. Wenn Sie wissen, wie verschiedene Feldtypen im JSON-Schema dargestellt werden, können Sie die grundlegenden Einschränkungen der einzelnen Typen anzeigen.

HINWEIS

Siehe API-Grundlagenhandbuch Weitere Informationen zum JSON-Schema und anderen zugrunde liegenden Technologien in Platform-APIs.

In der folgenden Tabelle wird beschrieben, wie jeder XDM-Typ im JSON-Schema dargestellt wird, zusammen mit einem Beispielwert, der dem Typ entspricht:

XDM-Typ JSON-Schema Beispiel
String
{"type": "string"}
"Platinum"
Double
{"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).

Zuordnen von XDM-Typen zu anderen Formaten

In den folgenden Abschnitten wird beschrieben, wie die einzelnen XDM-Typen anderen gängigen Serialisierungsformaten zugeordnet werden:

WICHTIG

Unter den in den folgenden Tabellen aufgeführten Standard-XDM-Typen ist die Zuordnung Typ ist ebenfalls enthalten. Maps werden in Standardschemata verwendet, wenn Daten als Schlüssel dargestellt werden, die bestimmten Werten zugeordnet sind, oder wenn Schlüssel vernünftigerweise nicht in ein statisches Schema aufgenommen werden können und als Datenwerte behandelt werden müssen.

Felder vom Typ Zuordnung sind für die Verwendung des Branchen- und Händlerschemas reserviert und können daher nicht in von Ihnen definierten benutzerdefinierten Ressourcen verwendet werden. Die Einbindung des Zuordnungstyps in die folgenden Tabellen soll Ihnen nur bei der Bestimmung der Zuordnung Ihrer vorhandenen Daten zu XDM helfen, wenn diese derzeit in einem der unten aufgeführten Formate gespeichert sind.

Parquet, Spark SQL und Java

XDM-Typ Parquet 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 STRING)
MapType

(keyType muss StringType)
java.util.Map

Scala, .NET und CosmosDB

XDM-Typ Scala .NET CosmosDB
Zeichenfolge String System.String String
Double 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
Double 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 mithilfe des Standards definiert JSON-Schema Einschränkungen, die für ihren Feldtyp gelten, mit zusätzlichen Einschränkungen für Feldnamen, die von Experience Platform. 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 verfügbar gemacht, meta:xdmType.

HINWEIS

meta:xdmType ist ein systemgenerierter Wert. Daher müssen Sie diese Eigenschaft bei Verwendung der API nicht zum JSON für Ihr Feld hinzufügen. Es empfiehlt sich, JSON-Schematypen zu verwenden (z. B. string und integer) mit den entsprechenden Mindest-/Höchstbeschränkungen, wie in der folgenden Tabelle definiert.

In der folgenden Tabelle wird die entsprechende Formatierung zum Definieren verschiedener Feldtypen einschließlich derjenigen mit optionalen Eigenschaften beschrieben. 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-Anfrage für bereitgestellt wird. Erstellen einer Feldergruppe oder Erstellen eines Datentyps.

XDM-Typ Optionale Eigenschaften Beispiel
String
  • pattern
  • minLength
  • maxLength
"sampleField": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2
}
URI
"sampleField": {
          "type": "string",
          "format": "uri"
}
Enum
  • default
  • meta:enum
Begrenzte Enum-Werte werden unter der enum Array, während optionale kundenorientierte Beschriftungen für jeden Wert unter bereitgestellt werden können. meta:enum:
"sampleField": {
          "type": "string",
          "enum": [
              "value1",
              "value2",
              "value3"
          ],
          "meta:enum": {
              "value1": "Value 1",
              "value2": "Value 2",
              "value3": "Value 3"
          },
          "default": "value1"
}

Beachten Sie Folgendes: meta:enum Wert: not Deklarieren Sie eine Auflistung oder führen Sie eine Datenvalidierung allein durch. In den meisten Fällen werden unter meta:enum werden auch enum , um sicherzustellen, dass die Daten begrenzt sind. Es gibt jedoch einige Anwendungsfälle, in denen meta:enum ohne entsprechende enum Array. Siehe Tutorial zu Erweitern von Soft Enves für weitere Informationen.
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", "example": ["2004-10-23T12:00:00-06:00"] }
Array Ein Array grundlegender Skalartypen (z. B. Zeichenfolgen):
"sampleField": {
          "type": "array",
          "items": {
            "type": "string"
  }
}
Ein Array von Objekten, die durch ein anderes Schema definiert werden:
"sampleField": { "type": "array", "items": { "$ref": "https://ns.adobe.com/xdm/data/paymentitem" } }
Objekt Die type -Attribut jedes Unterfelds, das unter properties kann mit einem beliebigen Skalartyp definiert werden:
"sampleField": {
          "type": "object",
          "properties": {
            "field1": {
              "type": "string"
            },
            "field2": {
              "type": "number"
    }
  }
}
Objekttypfelder können definiert werden, indem auf die $id eines Datentyps:
"sampleField": { "type": "object", "$ref": "https://ns.adobe.com/xdm/common/phoneinteraction" }
Map Karte darf nicht definieren beliebige Eigenschaften. Es must eine einzelne additionalProperties schema zur Beschreibung des Werttyps, der in der Zuordnung enthalten ist (jede Zuordnung kann nur einen einzigen Datentyp enthalten). Werte können beliebige gültige XDM-Werte sein. type -Attribut oder einen Verweis auf ein anderes Schema mithilfe eines $ref -Attribut.

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

Auf dieser Seite