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:
| Столбец | Тип | Описание |
|---|---|---|
key | String | Имя ключа из объекта JSON |
value | JSON | Соответствующее значение с сохранением типа 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 |
+------+------+