全部產品
Search
文件中心

MaxCompute:JSON_EXPLODE

更新時間:Nov 15, 2024

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資料之間可能不會按照原有的順序排列。