XDM欄位類型約束

在Experience Data Model(XDM)架構中,欄位的類型會限制欄位可包含的資料類型。 本檔案提供每個核心欄位類型的概觀,包括其他可映射至的序列化格式,以及如何在API中定義您自己的欄位類型,以執行不同的限制。

快速入門

在使用本指南之前,請先閱讀架構構成的基本說明,以瞭解XDM架構、類和架構欄位組的簡介。

如果您打算在API中定義自己的欄位類型,強烈建議您從方案註冊表開發人員指南開始,以瞭解如何建立欄位群組和資料類型,以包含您的自訂欄位。 如果您使用Experience PlatformUI來建立結構,請參閱UI🔗中定義欄位的指南,瞭解如何對自訂欄位群組和資料類型中定義的欄位實施限制。

基本結構與範例

XDM建立在JSON結構描述之上,因此,在定義其類型時,XDM欄位會繼承類似的語法。 瞭解JSON結構描述中不同欄位類型的表示方式,有助於指出每種類型的基本限制。

注意

如需平台API中JSON結構描述和其他基礎技術的詳細資訊,請參閱API基礎指南

下表概述JSON結構描述中每個XDM類型的表示方式,以及符合該類型的範例值:

XDM類型 JSON結構描述 範例
[ !UICONCONTROL字串]
{"type":"字串"}
"Platinum"
Double
{"type":"number"}
12925.49
Long
{
  「類型」:"integer",
  「最大值」:9007199254740991,
  「最小」:-9007199254740991
}
1478108935
[ !UICONCONTROL整數]
{
  「類型」:"integer",
  「最大值」:2147483648,
  「最小」:-2147483648
}
24906290
簡寫
{
  「類型」:"integer",
  「最大值」:32768,
  「最小」:-32768
}
15781
[ !UICONCONTROL位元組]
{
  「類型」:"integer",
  「最大值」:128,
  「最小」:-128
}
90
[ !UICONCONTROL日期]*
{
  「類型」:"字串",
  「格式」:"日期"
}
"2019-05-15"
[ !UICONCONTROL DateTime]*
{
  「類型」:"字串",
  「格式」:"日期——時間"
}
"2019-05-15T20:20:39+00:00"
[ !UICONCONTROL布爾值]
{"type":"字串"}
true

*所有日期格式化字串都必須符合ISO 8601標準(RFC 3339, 5.6節)。

將XDM類型映射到其他格式

以下各節說明每個XDM類型如何對應至其他常用的序列化格式:

重要

在下表中列出的標準XDM類型中,還包括Map類型。 當資料表示為對應至特定值的索引鍵,或當索引鍵無法合理地包含在靜態架構中且必須視為資料值時,標準架構中會使用地圖。

映射類型欄位保留給行業和供應商模式使用,因此不能用於您定義的自定義資源。 映射類型包含在下表中僅用於幫助您確定如何將現有資料映射到XDM(如果當前資料以下列任何格式儲存)。

Parce、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
Integer 類型:INT32
注釋:INT_32
IntegerType java.lang.Integer
Short 類型:INT32
注釋:INT_16
ShortType java.lang.Short
Byte 類型:INT32
注釋:INT_8
ByteType java.lang.Short
Date 類型:INT32
注釋:DATE
DateType java.util.Date
DateTime 類型:INT64
注釋:TIMESTAMP_MILLIS
TimestampType java.util.Date
Boolean 類型:BOOLEAN BooleanType java.lang.Boolean
Map MAP-annotated group

(<key-type> 必須 STRING)
MapType

(keyType 必須 StringType)
java.util.Map

Scala、.NET和CosmosDB

XDM類型 斯卡拉 .NET CosmosDB
String String System.String String
Double Double System.Double Number
Long Long System.Int64 Number
Integer Int System.Int32 Number
Short Short System.Int16 Number
Byte Byte System.SByte Number
Date java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
Boolean Boolean System.Boolean Boolean
Map Map (不適用) object

MongoDB、Aerospike和Protobuf 2

XDM類型 MongoDB 塞式飛行器 Protobuf 2
String string String string
Double double Double double
Long long Integer int64
Integer int Integer int32
Short int Integer int32
Byte int Integer int32
Date date Integer
(Unix毫秒)
int64
(Unix毫秒)
DateTime timestamp Integer
(Unix毫秒)
int64
(Unix毫秒)
Boolean bool Integer
(0/1二進位)
bool
Map object map map<key_type, value_type>

在API中定義XDM欄位類型

所有XDM欄位都是使用適用於其欄位類型的標準JSON結構描述限制來定義,並加上Experience Platform所強制之欄位名稱的其他限制。 方案註冊表API允許您通過使用格式和可選約束來定義其他欄位類型。 XDM欄位類型由欄位級屬性meta:xdmType公開。

注意

meta:xdmType 是系統產生的值,因此使用API時,您不需要將此屬性新增至欄位的JSON。最佳實務是使用JSON結構描述類型(例如stringinteger),並依下表所定義的適當最小/最大限制。

下表概述了定義不同欄位類型(包括具有可選屬性的欄位類型)的適當格式。 有關可選屬性和類型特定關鍵字的詳細資訊,請參閱JSON結構描述檔案

若要開始,請尋找所需的欄位類型,並使用提供的范常式式碼來建立您的API要求,以建立欄位群組🔗以建立資料類型

XDM類型 可選屬性 範例
[ !UICONCONTROL字串]
  • pattern
  • minLength
  • maxLength
"sampleField":{
    「類型」:"字串",
    「模式」:"^[A-Z]{2}$",
    "maxLength":2
}
URI
"sampleField":{
  「類型」:"字串",
  「格式」:"uri"
}
[ !UICONCONTROL枚舉]
  • default
  • meta:enum
約束枚舉值在enum陣列下提供,而每個值的可選面向客戶的標籤可在meta:enum下提供:
"sampleField":{
  「類型」:"字串",
  「列舉」:[ ]
      "value1"、
      "value2",
      "value3"
  ] 、
  "meta:enum":{
      "value1":"值1",
      "value2":"值2",
      "value3":"值3"
  },
  "default":"value1"
}
[ !UICONCONTROL編號]
"sampleField":{
  「類型」:"數字"
}
Long
"sampleField":{
  「類型」:"integer",
  「最小」:-9007199254740992,
  「最大值」:9007199254740992
}
[ !UICONCONTROL整數]
"sampleField":{
  「類型」:"integer",
  「最小」:-2147483648,
  「最大值」:2147483648
}
簡寫
"sampleField":{
  「類型」:"integer",
  「最小」:-32768,
  「最大值」:郵編:32768
}
[ !UICONCONTROL位元組]
"sampleField":{
  「類型」:"integer",
  「最小」:-128,
  「最大值」:128
  }
[ !UICONCONTROL布爾值]
  • default
"sampleField":{
  「類型」:"布林值",
  "default":false
}
[ !UICONCONTROL日期]
"sampleField":{
  「類型」:"字串",
  「格式」:「日期」,
  「範例」:["2004-10-23"]
}
[ !UICONCONTROL DateTime]
"sampleField":{
  「類型」:"字串",
  「格式」:「日期時間」、
  「範例」:["2004-10-23T12:00:00-06:00"]
}
[ !UICONCONTROL陣列] 基本標量類型的陣列(例如字串):
"sampleField":{
  「類型」:"array"、
  「項目」:{
    「類型」:"字串"
  }
}
由另一個方案定義的對象陣列:
"sampleField":{
  「類型」:"array"、
  「項目」:{
    「$ref」:"https://ns.adobe.com/xdm/data/paymentitem"
  }
}
[ !UICONCONTROL對象] properties下定義的每個子欄位的type屬性可以使用任何標量類型來定義:
"sampleField":{
  「類型」:"object",
  「屬性」:{
    "field1":{
      「類型」:"字串"
    },
    "field2":{
      「類型」:"數字"
    }
  }
}
對象類型欄位可通過引用資料類型的$id來定義:
"sampleField":{
  「類型」:"object",
  「$ref」:"https://ns.adobe.com/xdm/common/phoneinteraction"
}
[ !UICONCONTROL映射] 映射不能定義任何屬性。 它必須定義單個additionalProperties模式,以說明映射中包含的值類型(每個映射只能包含單一資料類型)。 值可以是任何有效的XDM type屬性,或是使用$ref屬性對其他模式的引用。

具有字串類型值的映射欄位:
"sampleField":{
  「類型」:"object",
  "additionalProperties":{
    「類型」:"字串"
  }
}
包含陣列字串的值映射欄位:
"sampleField":{
  「類型」:"object",
  "additionalProperties":{
    「類型」:"array"、
    「項目」:{
      「類型」:"字串"
    }
  }
}
引用其他資料類型的映射欄位:
"sampleField":{
  「類型」:"object",
  "additionalProperties":{
    「$ref」:"https://ns.adobe.com/xdm/data/paymentitem"
  }
}

本頁內容