Перейти к содержимому
Последнее обновление

JSON_EACH_OUTER

Описание​

Табличная функция json_each_outer разворачивает объект JSON верхнего уровня в набор пар «ключ/значение». Каждая строка содержит один ключ (key) и соответствующее ему значение (value). Столбец value сохраняет тип JSON, поэтому строковые значения возвращаются с сохранением кавычек JSON.

В отличие от json_each, при входном значении NULL или пустом объекте json_each_outer возвращает одну строку со значениями NULL, NULL вместо 0 строк.

Должна использоваться с LATERAL VIEW.

Синтаксис​

JSON_EACH_OUTER(<json_str>)

Параметры​

ПараметрОписание
<json_str>Строка JSON для развёртывания. Содержимое должно быть объектом JSON.

Возвращаемое значение​

Возвращает данные в виде нескольких столбцов и строк. Каждая строка соответствует одной паре «ключ/значение» в объекте JSON:

СтолбецТипОписание
keyStringИмя ключа из объекта JSON
valueJSONСоответствующее значение с сохранением типа JSON (строковые значения содержат кавычки, например "foo")

Особые случаи:

  • Если <json_str> имеет значение NULL, возвращает 1 строку со значениями NULL, NULL
  • Если <json_str> — пустой объект ({}), возвращает 1 строку со значениями NULL, NULL

Примеры​

Базовое использование: развёртывание объекта JSON со строковыми значениями

SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_outer('{"a":"foo","b":"bar"}') t AS k, v;
+---+-------+
| k | v |
+---+-------+
| a | "foo" |
| b | "bar" |
+---+-------+

Параметр NULL: возвращает 1 строку со значениями NULL

SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_outer(NULL) t AS k, v;
+------+------+
| k | v |
+------+------+
| NULL | NULL |
+------+------+

Пустой объект: возвращает 1 строку со значениями NULL

SELECT k, v
FROM (SELECT 1) dummy
LATERAL VIEW json_each_outer('{}') t AS k, v;
+------+------+
| k | v |
+------+------+
| NULL | NULL |
+------+------+