XDMフィールド型の制約

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

はじめに

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

独自のフィールドの種類を定義する場合は、『 スキーマレジストリ開発者ガイド 』に開始して、カスタムフィールドを含めるためのミックスインとデータ型の作成方法を学ぶことを強くお勧めします。

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

The table below describes the mapping between each XDM type (meta:xdmType) and other serialization formats.

XDM タイプ
(meta:xdmType)
JSON
(JSON スキーマ)
Parquet
(タイプ / 注釈)
Spark SQL Java Scala .NET CosmosDB MongoDB Aerospike Protobuf 2
string type:string BYTE_ARRAY/UTF8 StringType java.lang.String String System.String String string String string
number type:number DOUBLE DoubleType java.lang.Double Double System.Double Number double Double double
long type:integer
maximum:253+1<br>minimum:-253+1
INT64 LongType java.lang.Long Long System.Int64 Number long Integer int64
int type:integer
maximum:231<br>minimum:-231
INT32/INT_32 IntegerType java.lang.Integer Int System.Int32 Number int Integer int32
short type:integer
maximum:215<br>minimum:-215
INT32/INT_16 ShortType java.lang.Short Short System.Int16 Number int Integer int32
byte type:integer
maximum:27<br>minimum:-27
INT32/INT_8 ByteType java.lang.Short Byte System.SByte Number int Integer int32
boolean type:boolean BOOLEAN BooleanType java.lang.Boolean Boolean System.Boolean Boolean bool Integer Integer
date type:string
format:date
(RFC 3339、セクション 5.6)
INT32/DATE DateType java.util.Date java.util.Date System.DateTime String date Integer
(unix ミリ秒)
int64
(unix ミリ秒)
date-time type:string
format:date-time
(RFC 3339、セクション 5.6)
INT64/TIMESTAMP_MILLIS TimestampType java.util.Date java.util.Date System.DateTime String timestamp Integer
(unix ミリ秒)
int64
(unix ミリ秒)
map object MAP annotated group

<key_type> MUST be STRING

<value_type> type of map values
MapType

"keyType" MUST be StringType

"valueType" is type of map values.
java.util.Map Map object object map map<key_type, value_type>

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

XDM schemas are defined using JSON Schema standards and basic field types, with additional constraints for field names which are enforced by Experience Platform. スキーマレジストリAPI ®を使用すると、形式やオプションの制約を使用して、追加のフィールドの種類を定義できます。 XDM field types are exposed by the field-level attribute, meta:xdmType.

メモ

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

次の表に、オプションのプロパティを使用してスカラーフィールドタイプとより具体的なフィールドタイプを定義するための適切な書式の概要を示します。オプションのプロパティとタイプ固有のキーワードに関する詳細については、JSON スキーマのドキュメントを参照してください。

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

目的のタイプ
(meta:xdmType)
JSON
(JSON スキーマ)
コードサンプル
string type: string

オプションのプロパティ:
  • pattern
  • minLength
  • maxLength
        "sampleField": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2
        }
      
uri
(xdmType:string)
type: string
format: uri
        "sampleField": {
          "type": "string",
          "format": "uri"
        }
      
enum
(xdmType: string)
type: string

オプションのプロパティ:
  • default
"meta:enum" を使用して、顧客に表示するオプションのラベルを指定します:
        "sampleField": {
          "type": "string",
          "enum": [
              "value1",
              "value2",
              "value3"
          ],
          "meta:enum": {
              "value1": "Value 1",
              "value2": "Value 2",
              "value3": "Value 3"
          },
          "default": "value1"
        }
      
number type: number
minimum: ±2.23×10^308
maximum: ±1.80×10^308
        "sampleField": {
          "type": "number"
        }
      
long type: integer
maximum:2^53+1
minimum:-2^53+1
        "sampleField": {
          "type": "integer",
          "minimum": -9007199254740992,
          "maximum": 9007199254740992
        }
      
int type: integer
maximum:2^31
minimum:-2^31
        "sampleField": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483648
        }
      
short type: integer
maximum:2^15
minimum:-2^15
        "sampleField": {
          "type": "integer",
          "minimum": -32768,
          "maximum": 32768
        }
      
byte type: integer
maximum:2^7
minimum:-2^7
        "sampleField": {
          "type": "integer",
          "minimum": -128,
          "maximum": 128
          }
      
boolean
type: boolean
{true, false}

オプションのプロパティ:
  • default
        "sampleField": {
          "type": "boolean",
          "default": false
        }
      
date type: string
format: date
        "sampleField": {
          "type": "string",
          "format": "date",
          "examples": ["2004-10-23"]
        }
      
RFC 3339 のセクション 5.6 で定義されている日付。ここでは、"full-date" = date-fullyear "-" date-month "-" date-mday (YYYY-MM-DD)
date-time type: string
format: date-time
        "sampleField": {
          "type": "string",
          "format": "date-time",
          "examples": ["2004-10-23T12:00:00-06:00"]
        }
      
RFC 3339 のセクション 5.6 で定義されている日時。ここでは、"date-time" = full-date "T" full-time:
(YYYY-MM-DD'T'HH:MM:SS.SSSSX)
array type: array items.type は、任意のスカラー型を使用して定義できます:
        "sampleField": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      
別のスキーマで定義されたオブジェクトの配列:
        "sampleField": {
          "type": "array",
          "items": {
            "$ref": "id"
          }
        }
      
ここで、"id" は参照スキーマの {id} です。
object type: object properties.{field}.type は、任意のスカラー型を使用して定義できます:
        "sampleField": {
          "type": "object",
          "properties": {
            "field1": {
              "type": "string"
            },
            "field2": {
              "type": "number"
            }
          }
        }
      
参照スキーマで定義される type "object" のフィールド:
        "sampleField": {
          "type": "object",
          "$ref": "id"
        }
      
ここで、"id" は参照スキーマの {id} です。
map type: object

注:
'map' データ型の使用は、業界およびベンダースキーマでの使用のために予約されており、テナント定義フィールドでは使用できません。このデータ型は、値にマッピングされるキーとしてデータが表される場合、またはキーを静的スキーマに合理的に含めることができないため、データ値として処理する必要がある場合に標準スキーマで使用されます。
'map' はプロパティを定義できません。'map'に含まれる値の種類を記述するために、"additionalProperties"スキーマを1つ定義する必要があります。 XDM の 'map' には、1 つのデータ型のみを含めることができます。値は、配列やオブジェクトなどの任意の有効な XDM スキーマ定義または別のスキーマへの参照($ref 経由)です。

type 'string' の値を持つ map フィールド:
        "sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "string"
          }
        }
      
文字列の配列を持つ map フィールド:
        "sampleField": {
          "type": "object",
          "additionalProperties":{
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      
別のスキーマを参照する map フィールド:
        "sampleField": {
          "type": "object",
          "additionalProperties":{
            "$ref": "id"
          }
        }
      
ここで、"id" は参照スキーマの {id} です。

このページ