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