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 |
|-------+-------|當var是JSON ARRAY類型時,將最外層JSON ARRAY展開為多行JSON資料,其中KEY為NULL,VALUE為JSON ARRAY的元素。
當var是JSON OBJECT類型時,將最外層JSON OBJECT的每個KEY和VALUE展開為包含兩列的行,其中KEY列(STRING類型)儲存JSON OBJECT的KEY,VALUE列(JSON類型)儲存JSON OBJECT的VALUE。
使用樣本
建立表table_json並寫入資料,其中第一行為JSON OBJECT類型,第二行為JSON ARRAY類型。
-- 建立表
CREATE TABLE table_json(c1 json);
-- 插入資料
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}');
-- 查看錶資料
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資料之間可能不會按照原有的順序排列。