适用于: Databricks Runtime 15.3 及更高版本
表示 VARIANT 中的值,其结构通过一系列字段来描述。
有关存储和处理由一系列字段描述的结构化类型的信息,请参阅 STRUCT。
重要
OBJECT
不能存储在表列中。
它仅在调用 schema_of_variant 或 schema_of_variant_agg 时才会公开。
若要使用 OBJECT
类型,必须将它强制转换为 STRUCT 或 MAP。
语法
OBJECT < [fieldName [:] fieldType [, ...] ] >
fieldName
:给字段命名的标识符。 名称必须是唯一的。fieldType
:任何数据类型。
限制
类型支持任何大于或等于 0 的字段数。
文本
不能在 OBJECT
外部创建 的值。
它们是使用 VARIANT
函数将 JSON 字符串分析成 的结果。
备注
- 若要提取
OBJECT
,你可以运行:variant_get
函数 使用 JSON 路径表达式 导航到该OBJECT
类型。:
(冒号)运算符用于通过 JSON 路径表达式解析OBJECT
。try_variant_get
函数使用 JSON 路径导航到具有容错的OBJECT
类型。cast
函数或::
(双冒号)运算符将OBJECT
强制转换为 STRUCT 或 MAP。try_cast
函数 或?::
(三个冒号)运算符 用于将OBJECT
转换为 STRUCT 或 MAP。
示例
> SELECT schema_of_variant(parse_json('{"key": 123, "data": 5.1 }'));
OBJECT<data: DECIMAL(2,1), key: BIGINT>
-- Casting from a an OBJECT to a STRUCT is by name, because OBJECT fields are not ordered.
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS STRUCT<data: DECIMAL(2,1), key: BIGINT>);
{"data":5.1,"key":123}
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS STRUCT<key: BIGINT, data: DECIMAL(2,1)>);
{"key":123, "data":5.1}
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS MAP<STRING, DECIMAL(20, 1)>);
{"data":"5.1","key":"123.0"}