EXPLODE_JSON_OBJECT
説明
explode_json_objectTable関数は、JSONオブジェクトを複数の行に展開し、各行にキーと値のペアを含めます。
JSONオブジェクトをよりクエリしやすい形式に変換するために一般的に使用されます。この関数は要素を持つJSONオブジェクトのみをサポートします。
LATERAL VIEWと組み合わせて使用する必要があります。
構文
EXPLODE_JSON_OBJECT(<json>)
パラメータ
<json>JSON型、内容はJSONオブジェクトである必要があります。
戻り値
<json>内のすべての要素で構成される単一列、複数行の結果を返します。列の型はNullable<Struct<String, JSON>>です。<json>がNULLまたはJSONオブジェクトでない場合(配列[]など)、0行が返されます。<json>が空のオブジェクトの場合({}など)、0行が返されます。
例
-
データを準備する
create table example(
k1 int
) properties(
"replication_num" = "1"
);
insert into example values(1); -
通常のパラメータ
select * from example lateral view explode_json_object('{"k1": "v1", "k2": 123}') t2 as c;+------+------------------------------+
| k1 | c |
+------+------------------------------+
| 1 | {"col1":"k1", "col2":""v1""} |
| 1 | {"col1":"k2", "col2":"123"} |
+------+------------------------------+ -
キー・バリューペアを個別の列に展開する
select * from example lateral view explode_json_object('{"k1": "v1", "k2": 123}') t2 as k, v;+------+------+------+
| k1 | k | v |
+------+------+------+
| 1 | k1 | "v1" |
| 1 | k2 | 123 |
+------+------+------+
vの型は JSON です
-
空のオブジェクト
select * from example lateral view explode_json_object('{}') t2 as c;Empty set (0.03 sec) -
NULLパラメータ
select * from example lateral view explode_json_object(NULL) t2 as c;Empty set (0.03 sec) -
Non-objectパラメータ
select * from example lateral view explode_json_object('[]') t2 as c;Empty set (0.03 sec)