XDM字段类型约束
在Experience Data Model (XDM)架构中,字段的类型会限制字段可以包含的数据类型。 本文档概述了每种核心字段类型,包括它们可以映射到的其他序列化格式,以及如何在API中定义自己的字段类型以强制实施不同的限制。
快速入门
在使用本指南之前,请查看架构组合的基础知识,以了解XDM架构、类和架构字段组的简介。
如果您计划在API中定义自己的字段类型,强烈建议您从架构注册表开发人员指南开始,了解如何创建字段组和数据类型以包含您的自定义字段。 如果您使用Experience PlatformUI创建架构,请参阅在UI中定义字段指南,以了解如何对您在自定义字段组和数据类型中定义的字段实施约束。
基本结构和示例 basic-types
XDM基于JSON架构构建,因此XDM字段在定义其类型时继承类似的语法。 了解不同字段类型在JSON架构中的表示方式有助于指示每种类型的基本约束。 自定义字段名称不区分大小写,并且在架构中的同一级别必须具有不同的名称。
NOTE
有关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":32768,
"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": "string"}
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
62e9ffd9-1c74-4cef-8f47-0d00af32fc07