XDM字段类型约束

在Experience Data Model (XDM)架构中,字段的类型会限制字段可以包含的数据类型。 本文档概述了每种核心字段类型,包括它们可以映射到的其他序列化格式,以及如何在API中定义自己的字段类型以强制实施不同的限制。

快速入门

在使用本指南之前,请查看架构组合的基础知识,以了解XDM架构、类和架构字段组的简介。

如果您计划在API中定义自己的字段类型,强烈建议您从架构注册表开发人员指南开始,了解如何创建字段组和数据类型以包含您的自定义字段。 如果您使用Experience Platform UI创建架构,请参阅在UI中定义字段指南,以了解如何对您在自定义字段组和数据类型中定义的字段实施约束。

基本结构和示例 basic-types

XDM基于JSON架构构建,因此XDM字段在定义其类型时继承类似的语法。 了解不同字段类型在JSON架构中的表示方式有助于指示每种类型的基本约束。 自定义字段名称不区分大小写,并且在架构中的同一级别必须具有不同的名称。

NOTE
有关Experience Platform API中JSON架构和其他基础技术的更多信息,请参阅API基础指南。

下表概述了每个XDM类型在JSON架构中的表示方式,以及符合该类型的示例值:

XDM类型
JSON架构
示例
字符串
{"type": "string"}
"Platinum"
编号
{"type": "number"}
12925.49
Long
{
  "type": "integer",
  "maximum":9007199254740991,
  "minimum": -9007199254740991
}
1478108935
整数
{
  "type": "integer",
  "maximum":2147483648,
  "minimum": -2147483648
}
24906290
Short
{
  "type": "integer",
  "maximum":32767,
  "minimum": -32768
}
15781
字节
{
  "type": "integer",
  “最大值”:128,
  “最小值”:-128
}
90
日期*
{
  "type": "string",
  "format": "date"
}
"2019-05-15"
日期时间*
{
  "type": "string",
  "format": "date-time"
}
"2019-05-15T20:20:39+00:00"
Boolean
{"type": "boolean"}
true

*​所有日期格式字符串必须符合ISO 8601标准(RFC 3339,第5.6节)。

将XDM类型映射到其他格式

以下各节将介绍每个XDM类型如何映射到其他常见的序列化格式:

NOTE
在下表列出的标准XDM类型中,Map类型也包括在内。 当数据表示为映射到特定值的键时,或者在静态架构中无法合理地包含键且必须视为数据值时,在标准架构中使用映射。
许多标准XDM组件使用映射类型,如果需要,您还可以定义自定义映射字段。 下表包含映射类型,其目的是为了帮助您确定如何将现有数据映射到XDM(如果当前以下面列出的任何格式存储)。

Parquet、Spark SQL和Java parquet

XDM类型
Parquet
Spark SQL
Java
字符串
类型: BYTE_ARRAY
批注: UTF8
StringType
java.lang.String
数字
类型:DOUBLE
LongType
java.lang.Double
长
类型:INT64
LongType
java.lang.Long
整数
类型: INT32
批注: INT_32
IntegerType
java.lang.Integer
短
类型: INT32
批注: INT_16
ShortType
java.lang.Short
字节
类型: INT32
批注: INT_8
ByteType
java.lang.Short
日期
类型: INT32
批注: DATE
DateType
java.util.Date
日期时间
类型: INT64
批注: TIMESTAMP_MILLIS
TimestampType
java.util.Date
布尔值
类型:BOOLEAN
BooleanType
java.lang.Boolean
地图
MAP — 注释的组

(<key-type>必须为STRING)
MapType

(keyType必须为StringType)
java.util.Map

Scala、.NET和CosmosDB scala

XDM类型
Scala
.NET
CosmosDB
字符串
String
System.String
String
数字
Double
System.Double
Number
长
Long
System.Int64
Number
整数
Int
System.Int32
Number
短
Short
System.Int16
Number
字节
Byte
System.SByte
Number
日期
java.util.Date
System.DateTime
String
日期时间
java.util.Date
System.DateTime
String
布尔值
Boolean
System.Boolean
Boolean
地图
Map
(不适用)
object

MongoDB、Arospike和Protobuf 2 mongo

XDM类型
MongoDB
塞式火箭
Protobuf 2
字符串
string
String
string
数字
double
Double
double
长
long
Integer
int64
整数
int
Integer
int32
短
int
Integer
int32
字节
int
Integer
int32
日期
date
Integer
(Unix毫秒)
int64
(Unix毫秒)
日期时间
timestamp
Integer
(Unix毫秒)
int64
(Unix毫秒)
布尔值
bool
Integer
(0/1二进制文件)
bool
地图
object
map
map<key_type, value_type>

在API中定义XDM字段类型 define-fields

架构注册表API允许您通过使用格式和可选约束来定义自定义字段。 有关详细信息,请参阅在架构注册表API中定义自定义字段指南。

recommendation-more-help
experience-platform-help-xdm