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