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架构
示例
String
{"type": "string"}
"Platinum"Number
{"type": "number"}
12925.49Long
{
"type": "integer",
"maximum":9007199254740991,
"minimum": -9007199254740991
}
1478108935Integer
{
"type": "integer",
"maximum":2147483648,
"minimum": -2147483648
}
24906290Short
{
"type": "integer",
"maximum":32767,
"minimum": -32768
}
15781Byte
{
"type": "integer",
“最大值”:128,
“最小值”:-128
}
90Date*
{
"type": "string",
"format": "date"
}
"2019-05-15"DateTime*
{
"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
String
类型:
批注:
BYTE_ARRAY批注:
UTF8StringTypejava.lang.StringNumber
类型:
DOUBLELongTypejava.lang.DoubleLong
类型:
INT64LongTypejava.lang.LongInteger
类型:
批注:
INT32批注:
INT_32IntegerTypejava.lang.IntegerShort
类型:
批注:
INT32批注:
INT_16ShortTypejava.lang.ShortByte
类型:
批注:
INT32批注:
INT_8ByteTypejava.lang.ShortDate
类型:
批注:
INT32批注:
DATEDateTypejava.util.DateDateTime
类型:
批注:
INT64批注:
TIMESTAMP_MILLISTimestampTypejava.util.DateBoolean
类型:
BOOLEANBooleanTypejava.lang.BooleanMap
MAP — 注释的组(
<key-type>必须为STRING)MapType(
keyType必须为StringType)java.util.MapScala、.NET和CosmosDB scala
XDM类型
Scala
.NET
CosmosDB
String
StringSystem.StringStringNumber
DoubleSystem.DoubleNumberLong
LongSystem.Int64NumberInteger
IntSystem.Int32NumberShort
ShortSystem.Int16NumberByte
ByteSystem.SByteNumberDate
java.util.DateSystem.DateTimeStringDateTime
java.util.DateSystem.DateTimeStringBoolean
BooleanSystem.BooleanBooleanMap
Map(不适用)
objectMongoDB、Arospike和Protobuf 2 mongo
XDM类型
MongoDB
塞式火箭
Protobuf 2
String
stringStringstringNumber
doubleDoubledoubleLong
longIntegerint64Integer
intIntegerint32Short
intIntegerint32Byte
intIntegerint32Date
dateInteger(Unix毫秒)
int64(Unix毫秒)
DateTime
timestampInteger(Unix毫秒)
int64(Unix毫秒)
Boolean
boolInteger(0/1二进制文件)
boolMap
objectmapmap<key_type, value_type>在API中定义XDM字段类型 define-fields
架构注册表API允许您通过使用格式和可选约束来定义自定义字段。 有关详细信息,请参阅在架构注册表API中定义自定义字段指南。
recommendation-more-help
62e9ffd9-1c74-4cef-8f47-0d00af32fc07