メインコンテンツまでスキップ
に最終更新

JSON_OBJECT_FLATTEN

説明​

JSON_OBJECT_FLATTEN は、ネストした JSON オブジェクトを、各末端の値へのパスをドットで連結したキーを持つ単一階層の JSON オブジェクトに変換します。NiFi FlattenJson の「keep-arrays」と同じ動作に従い、オブジェクトのみを再帰的にたどります。配列、スカラー値、JSON の null、空のオブジェクトは、それ以上展開せずに末端の値として保持します。

最上位の入力がオブジェクトでない場合(スカラー値、配列、JSON の null など)は、その値を変更せずに返します。

構文​

JSON_OBJECT_FLATTEN(<json_value>)

パラメータ​

<json_value> - 単一階層に変換する JSON 型の値です。

戻り値​

JSON 値を返します。

  • 入力がネストした JSON オブジェクトの場合、各末端の値へのパスをドットで連結したキーを持つ単一階層の JSON オブジェクトを返します。
  • 入力がオブジェクトでない場合(スカラー値、配列、JSON の null)、その値を変更せずに返します。
  • 入力が SQL の 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"} |
+--------------------------------------------------------------+