EXPLODE_JSON_OBJECT_OUTER
描述
explode_json_object_outer
表函数,将 JSON 对象展开为多行,每行包含一个键值对。
通常用于将 JSON 对象展开为更易查询的格式。该函数只支持包含元素的 JSON 对象。
需配合 LATERAL VIEW
使用。
语法
EXPLODE_JSON_OBJECT_OUTER(<json>)
参数
<json>
JSON 类型,其内容应该是 JSON 对象。
返回值
- 返回由
<json>
所有元素组成的单列多行数据,列类型为Nullable<Struct<String, JSON>>
。 - 如果
<json>
为 NULL 或者不是 JSON 对象(比如是数组[]
)返回 1 行 NULL 数据。 - 如果
<json>
为空对象(比如{}
),返回 1 行 NULL 数据。
示例
- 准备数据
create table example(
k1 int
) properties(
"replication_num" = "1"
);
insert into example values(1); - 常规参数
select * from example lateral view explode_json_object_outer('{"k1": "v1", "k2": 123}') t2 as c;
+------+------------------------------+
| k1 | c |
+------+------------------------------+
| 1 | {"col1":"k1", "col2":""v1""} |
| 1 | {"col1":"k2", "col2":"123"} |
+------+------------------------------+ - 将键值对展开为独立的列
select * from example lateral view explode_json_object_outer('{"k1": "v1", "k2": 123}') t2 as k, v;
+------+------+------+
| k1 | k | v |
+------+------+------+
| 1 | k1 | "v1" |
| 1 | k2 | 123 |
+------+------+------+v
的类型为 JSON - 空对象
select * from example lateral view explode_json_object_outer('{}') t2 as k, v;
+------+------+------+
| k1 | k | v |
+------+------+------+
| 1 | NULL | NULL |
+------+------+------+ - NULL 参数
select * from example lateral view explode_json_object_outer(NULL) t2 as k, v;
+------+------+------+
| k1 | k | v |
+------+------+------+
| 1 | NULL | NULL |
+------+------+------+ - 非对象参数
select * from example lateral view explode_json_object_outer('[]') t2 as k, v;
+------+------+------+
| k1 | k | v |
+------+------+------+
| 1 | NULL | NULL |