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数据之间可能不会按照原有的顺序排列。
文档内容是否对您有帮助?