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.
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.
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.
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.
Die folgenden Abschnitte beschreiben, wie jeder XDM-Typ anderen gängigen Serialisierungsformaten zugeordnet wird:
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.
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 STRING sein) |
MapType ( keyType muss StringType ) |
java.util.Map |
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 |
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> |
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.
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 |
|
"sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 } |
-URI |
"sampleField": { "type": "string", "format": "uri" } |
|
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 |
|
"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" } } |