すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:JSON_EXPLODE

最終更新日:Jan 17, 2025

MaxCompute JSON_EXPLODE関数は、JSON配列またはJSONオブジェクト内の各要素を複数のレコード行に展開するように設計されています。 このトピックでは、JSON_EXPLODE関数の詳細な使用方法と例を示します。

コマンド形式

JSON_EXPLODE(JSON <var>)

パラメーターの説明

var: 必須です。 JSON_ARRAYまたはJSON_OBJECTタイプをサポートします。 JSON定数、JSON STRING、JSON NUMBER、JSON BOOLEAN、およびNULL型はサポートされません。

戻り値の説明

この関数は、次の形式で変換された行を返します。

+-------+-------+
|  KEY  | VALUE |
|-------+-------|
  • JSON ARRAY型varの場合、JSON ARRAYの最も外側は、KEYをNULL、VALUEを配列要素として、JSONデータの複数の行に展開されます。

  • JSON OBJECT型varの場合、JSON OBJECTの最も外側の各KEY-VALUEペアは、2つの列を持つ行に拡張されます。STRING型KEY列はJSON OBJECTのKEYであり、JSON型VALUE列はJSON OBJECTのVALUEです。

table_jsonという名前のテーブルを作成し、そこにデータを挿入します。1行目はJSON OBJECT型、2行目はJSON ARRAY型です。

-- Create table
CREATE TABLE table_json(c1 json);
-- Insert data
INSERT INTO table_json(c1) SELECT JSON_OBJECT('a', 123,'b','hello');
INSERT INTO table_json(c1) SELECT JSON_ARRAY(1, true, 2, json'{"a":456}');
-- View table data
SELECT * FROM table_json;

クエリは次の結果を返します。

+-----------------------------+
| c1                            |
+-------------------------------+
| {"a":123,"b":"hello"}         |
| [1,true,2,{"a":456}]          |
+-------------------------------+

JSON_EXPLODE関数は、JSON配列またはJSONオブジェクトの各要素を複数の出力行に展開します。 以下はサンプルコードです:

SELECT JSON_EXPLODE(table_json.c1) FROM table_json;

クエリは次の結果を返します。

+-----+------------+
| key | value      |
+-----+------------+
| \N  | 1          |
| \N  | true       |
| \N  | 2          |
| \N  | {"a":456}  |
| a   | 123        |
| b   | hello      |
+-----+------------+
説明

JSONデータを変換するとき、同じJSONデータ内の要素は元のシーケンスを維持します。 ただし、複数のJSONデータエントリの順序は異なる場合があります。