適用対象:
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 の外部では作成できません。
これらは、VARIANT 関数を使用して JSON 文字列を解析して にした結果です。
メモ
-
OBJECTを抽出するには、以下を実行します。-
variant_get関数を使用して、JSONパス式でOBJECT型に移動します。 - JSON パス式を使用して
:を解析するには、OBJECTを使用します。 -
try_variant_get関数 を使用して、JSONパスでエラー許容を持つOBJECT型にアクセスします。 -
cast関数または::(コロンコロン記号) 演算子を使用してOBJECTをSTRUCTまたはMAPにキャストします。 -
try_castを?::または MAP にキャストする関数またはOBJECT(質問の二重コロン記号) 演算子をします。
-
例
> 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"}