Последнее обновление
EXPLODE_JSON_OBJECT
Описание
Табличная функция explode_json_object разворачивает объект JSON в несколько строк, каждая из которых содержит пару «ключ — значение».
Обычно её используют для преобразования объектов JSON в формат, более удобный для запросов. Эта функция поддерживает только объекты JSON, содержащие элементы.
Её следует использовать вместе с LATERAL VIEW.
Синтаксис
EXPLODE_JSON_OBJECT(<json>)
Параметры
<json>— значение типа JSON, содержимое должно быть объектом JSON.
Возвращаемое значение
- Возвращает результат с одним столбцом и несколькими строками, состоящий из всех элементов в
<json>. Тип столбца —Nullable<Struct<String, JSON>>. - Если
<json>имеет значение NULL или не является объектом JSON (например, является массивом[]), возвращается 0 строк. - Если
<json>— пустой объект (например,{}), возвращается 0 строк.
Примеры
- Подготовка данных
create table example(
k1 int
) properties(
"replication_num" = "1"
);
insert into example values(1); - Обычные параметры
select * from example lateral view explode_json_object('{"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('{"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('{}') t2 as c;Empty set (0.03 sec) - Параметр со значением NULL
select * from example lateral view explode_json_object(NULL) t2 as c;Empty set (0.03 sec) - Параметр, не являющийся объектом
select * from example lateral view explode_json_object('[]') t2 as c;Empty set (0.03 sec)