XDMフィールド型の制約

Experience Data Model(XDM)スキーマでは、フィールドに格納できるデータの種類をフィールドの種類に制限します。 このドキュメントでは、各コアフィールドタイプの概要を示します。この概要には、マッピングできる他のシリアル化形式や、異なる制約を適用するためにAPIで独自のフィールドタイプを定義する方法が含まれます。

はじめに

このガイドを使用する前に、XDMスキーマ、クラス、ミックスインの紹介について、スキーマ構成の基本事項を参照してください。

APIで独自のフィールドの種類を定義する場合は、カスタムフィールドを含めるミックスインとデータ型の作成方法について、『スキーマレジストリ開発者ガイド』に開始することを強くお勧めします。 Experience PlatformUIを使用してスキーマを作成する場合は、UIでのフィールドの定義のガイドを参照して、カスタムミックスインとデータ型内で定義するフィールドに制約を適用する方法を確認してください。

基本構造と例

XDMはJSONスキーマの上に構築されているので、XDMフィールドの型を定義する場合も同じ構文を継承します。 JSONスキーマでの各フィールドタイプの表現方法を理解することは、各タイプの基本制約を示すのに役立ちます。

メモ

Platform APIのJSONスキーマとその他の基盤となるテクノロジーについて詳しくは、APIの基本的なガイドを参照してください。

次の表に、各XDM型がJSONスキーマでどのように表されるか、および型に準拠する値の例を示します。

XDM タイプ JSON スキーマ
文字列
{"type":"string"}
"Platinum"
重複
{"type":"number"}
12925.49
{
  "type":"integer",
  "maximum":9007199254740991,
  "最小値":-9007199254740991
}
1478108935
整数
{
  "type":"integer",
  "maximum":2147483648,
  "最小値":-2147483648
}
24906290
Short
{
  "type":"integer",
  "maximum":32768,
  "最小値":-32768
}
15781
バイト
{
  "type":"integer",
  "maximum":128,
  "最小値":-128
}
90
日付*
{
  "type":"string",
  "format":"日付"
}
"2019-05-15"
DateTime*
{
  "type":"string",
  "format":"日付時間"
}
"2019-05-15T20:20:39+00:00"
ブール値
{"type":"string"}
true

*すべての日付形式の文字列は、ISO 8601標準(RFC 3339、セクション5.6)に準拠している必要があります。

他の形式への XDM タイプのマッピング

以下の節では、各XDMタイプと他の一般的なシリアル化形式との対応を説明します。

重要

以下の表に示す標準的なXDM型の中には、Map型も含まれています。 マップは、特定の値にマップするキーとしてデータが表される場合、または静的なスキーマにキーを適切に含めることができず、データ値として扱う必要がある場合に、標準スキーマで使用されます。

マップタイプフィールドは、業界やベンダーのスキーマ使用のために予約されているので、ユーザーが定義したカスタムリソースでは使用できません。 次の表に示すマップタイプの組み込みは、既存のデータが現在、以下に示す形式のいずれかで保存されている場合に、そのデータをXDMにマップする方法を判断するのに役立つものです。

Parket、Spark SQL、およびJava

XDM タイプ パーケ Spark SQL Java
String タイプ:BYTE_ARRAY
注釈:UTF8
StringType java.lang.String
Double 型:DOUBLE LongType java.lang.Double
Long 型:INT64 LongType java.lang.Long
整数 タイプ:INT32
注釈:INT_32
IntegerType java.lang.Integer
Short タイプ:INT32
注釈:INT_16
ShortType java.lang.Short
Byte タイプ:INT32
注釈:INT_8
ByteType java.lang.Short
日付 タイプ:INT32
注釈:DATE
DateType java.util.Date
DateTime タイプ:INT64
注釈:TIMESTAMP_MILLIS
TimestampType java.util.Date
ブール型 型:BOOLEAN BooleanType java.lang.Boolean
マップ MAP-annotated group

(<key-type> 必須 STRING)
MapType

(keyType 必須 StringType)
java.util.Map

Scala、.NET、CosmosDB

XDM タイプ Scala .NET CosmosDB
文字列 String System.String String
重複 Double System.Double Number
ロング Long System.Int64 Number
整数 Int System.Int32 Number
Short Short System.Int16 Number
バイト Byte System.SByte Number
日付 java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
ブール型 Boolean System.Boolean Boolean
マップ Map (なし) object

MongoDB、Aerospike、Protobuf 2

XDM タイプ MongoDB Aerospike Protobuf 2
文字列 string String string
重複 double Double double
ロング long Integer int64
整数 int Integer int32
Short int Integer int32
バイト int Integer int32
日付 date Integer
(UNIXミリ秒)
int64
(UNIXミリ秒)
DateTime timestamp Integer
(UNIXミリ秒)
int64
(UNIXミリ秒)
ブール型 bool Integer
(0/1バイナリ)
bool
マップ object map map<key_type, value_type>

API での XDM フィールドタイプの定義

すべてのXDMフィールドは、フィールドタイプに適用される標準のJSONスキーマ制約を使用して定義され、Experience Platformによって適用されるフィールド名に対する追加の制約が適用されます。 スキーマレジストリAPIを使用すると、形式とオプションの制約を使用して、追加のフィールドの種類を定義できます。 XDMのフィールド型は、フィールドレベルの属性meta:xdmTypeで公開されます。

メモ

meta:xdmType はシステム生成値なので、APIを使用する場合に、このプロパティをフィールドのJSONに追加する必要はありません。ベストプラクティスとして、JSONスキーマタイプ(stringintegerなど)を、以下の表に定義されている適切な最小/最大制約と共に使用します。

次の表に、オプションのプロパティを含む、様々なフィールドの種類を定義するための適切な形式設定の概要を示します。 オプションのプロパティとタイプ固有のキーワードに関する詳細については、JSON スキーマのドキュメントを参照してください。

最初に、目的のフィールドタイプを探し、提供されたサンプルコードを使用してmixinまたはcreating a data typeのAPIリクエストを作成します。

XDM タイプ オプションのプロパティ
文字列
  • pattern
  • minLength
  • maxLength
"sampleField": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2
}
URI
"sampleField": {
          "type": "string",
          "format": "uri"
}
列挙
  • default
  • meta:enum
制約付きの列挙値はenum配列の下に提供されますが、オプションで顧客向けの各ラベルはmeta:enumの下に提供できます。
"sampleField": {
          "type": "string",
          "enum": [
              "value1",
              "value2",
              "value3"
          ],
          "meta:enum": {
              "value1": "Value 1",
              "value2": "Value 2",
              "value3": "Value 3"
          },
          "default": "value1"
}
番号
"sampleField": {
          "type": "number"
}
"sampleField": {
          "type": "integer",
          "minimum": -9007199254740992,
          "maximum": 9007199254740992
}
整数
"sampleField": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483648
}
Short
"sampleField": {
          "type": "integer",
          "minimum": -32768,
          "maximum": 32768
}
バイト
"sampleField": {
          "type": "integer",
          "minimum": -128,
          "maximum": 128
  }
ブール値
  • default
"sampleField": {
          "type": "boolean",
          "default": false
}
日付
"sampleField": {
          "type": "string",
          "format": "date",
          "examples": ["2004-10-23"]
}
DateTime
"sampleField": {
          "type": "string",
          "format": "date-time",
          "examples": ["2004-10-23T12:00:00-06:00"]
}
配列 基本的なスカラー型の配列(例:文字列):
"sampleField": {
          "type": "array",
          "items": {
            "type": "string"
  }
}
別のスキーマで定義されたオブジェクトの配列:
"sampleField":{
  "type":"array",
  "items":{
    "$ref":"https://ns.adobe.com/xdm/data/paymentitem"
  }
}
オブジェクト propertiesで定義された各サブフィールドのtype属性は、次のスカラー型を使用して定義できます。
"sampleField": {
          "type": "object",
          "properties": {
            "field1": {
              "type": "string"
            },
            "field2": {
              "type": "number"
    }
  }
}
オブジェクト型のフィールドは、データ型の$idを参照することで定義できます。
"sampleField":{
  "type":"object",
  "$ref":"https://ns.adobe.com/xdm/common/phoneinteraction"
}
マップ マップは、プロパティを定義してはなりません。 マップ内に含まれる値のタイプを記述するには、単一のadditionalPropertiesスキーマを定義する必要があります(各マップには1つのデータタイプのみを含めることができます)。 値には、有効なXDM type属性、または$ref属性を使用した別のスキーマへの参照を指定できます。

文字列型の値を持つmapフィールド:
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "string"
  }
}
値に対する文字列の配列を含むmapフィールド:
"sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "array",
            "items": {
              "type": "string"
    }
  }
}
別のデータ型を参照するmapフィールド:
"sampleField":{
  "type":"object",
  "additionalProperties":{
    "$ref":"https://ns.adobe.com/xdm/data/paymentitem"
  }
}

このページ

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