に最終更新
JSON_OBJECT_FLATTEN
説明
JSON_OBJECT_FLATTEN は、入れ子の JSON オブジェクトを単一階層に展開します。キーには末端値へのパスをドットで連結した文字列を使用します。NiFi FlattenJson の「keep-arrays」セマンティクスに従い、オブジェクトだけを再帰的にたどります。配列、スカラー値、null、空のオブジェクトは展開せず、末端値として保持します。
最上位の入力がオブジェクトでない場合(スカラー値、配列、null など)は、そのまま返します。
構文
JSON_OBJECT_FLATTEN(<json_value>)
パラメータ
| パラメータ | 説明 |
|---|
| <json_value> | 展開する JSON 型の値。 |
戻り値
JSON 型の値を返します。
- 入力が入れ子の JSON オブジェクトなら、末端値へのパスをドットで連結したキーを持つ単一階層の JSON オブジェクトを返します。
- 入力がオブジェクトでなければ(スカラー値、配列、null)、変更せずに返します。
- 入力が
NULLの場合はNULLを返します。
例
基本的な入れ子オブジェクトの展開
SELECT json_object_flatten('{"a":{"b":2}}');
+--------------------------------------+
| json_object_flatten('{"a":{"b":2}}') |
+--------------------------------------+
| {"a.b":2} |
+--------------------------------------+
深く入れ子になったオブジェクト
SELECT json_object_flatten('{"a":{"b":{"c":3}}}');
+--------------------------------------------+
| json_object_flatten('{"a":{"b":{"c":3}}}') |
+--------------------------------------------+
| {"a.b.c":3} |
+--------------------------------------------+
既に単一階層のオブジェクト
SELECT json_object_flatten('{"a":1,"b":"hi"}');
+-----------------------------------------+
| json_object_flatten('{"a":1,"b":"hi"}') |
+-----------------------------------------+
| {"a":1,"b":"hi"} |
+-----------------------------------------+
配列を末端値として保持する
SELECT json_object_flatten('{"a":[{"b":1},{"b":2}]}');
+------------------------------------------------+
| json_object_flatten('{"a":[{"b":1},{"b":2}]}') |
+------------------------------------------------+
| {"a":[{"b":1},{"b":2}]} |
+------------------------------------------------+
SELECT json_object_flatten('{"a":{"b":[1,2,3]}}');
+--------------------------------------------+
| json_object_flatten('{"a":{"b":[1,2,3]}}') |
+--------------------------------------------+
| {"a.b":[1,2,3]} |
+--------------------------------------------+
最上位の非オブジェクト値をそのまま返す
SELECT json_object_flatten('42');
+---------------------------+
| json_object_flatten('42') |
+---------------------------+
| 42 |
+---------------------------+
SELECT json_object_flatten('[1,2,{"x":3}]');
+--------------------------------------+
| json_object_flatten('[1,2,{"x":3}]') |
+--------------------------------------+
| [1,2,{"x":3}] |
+--------------------------------------+
NULL 入力
SELECT json_object_flatten(NULL);
+---------------------------+
| json_object_flatten(NULL) |
+---------------------------+
| NULL |
+---------------------------+
スカラー値、配列、サブオブジェクトを含む入れ子オブジェクト
SELECT json_object_flatten('{"x":{"s":1,"a":[1,2],"o":{"k":"v"}}}');
+--------------------------------------------------------------+
| json_object_flatten('{"x":{"s":1,"a":[1,2],"o":{"k":"v"}}}') |
+--------------------------------------------------------------+
| {"x.s":1,"x.a":[1,2],"x.o.k":"v"} |
+--------------------------------------------------------------+