OBJECT
類型
適用於: 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 外部建立。
它們是使用 parse_json() 函式將 JSON 字串剖析為 VARIANT
的結果。
備註
- 若要擷取
OBJECT
,您可以:- variant_get使用 JSON 路徑運算式來巡覽至型別的
OBJECT
函式。 - :使用 JSON 路徑表示式剖析
OBJECT
的 (冒號) 運算子。 - try_variant_get函式,使用 JSON 路徑巡覽至
OBJECT
具有錯誤容忍的類型。 - cast 函式或 :: (冒號冒號) 運算符,將 轉換成
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"}