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
を抽出するには、以下を実行します。- JSON パス式を使用する variant_get 関数によって
OBJECT
型に移動する。 - JSON パス式を使用する : (コロン記号) 演算子によって
OBJECT
を解析する。 - JSON パスを使用する try_variant_get 関数によってエラーを許容しながら
OBJECT
型に移動する。 - cast 関数または :: (コロン コロン記号) 演算子によって
OBJECT
を STRUCT または MAP にキャストする。 - try_cast 関数または ?:: (トリプル コロン記号) 演算子によって
OBJECT
を STRUCT または MAP にキャストする。
- JSON パス式を使用する variant_get 関数によって
例
> 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"}