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データエントリの順序は異なる場合があります。