Последнее обновление
TRANSFORM_VALUES
Описание
Применяет лямбда-выражение к каждой записи в отображении и создаёт новое отображение с исходными ключами и преобразованными значениями. Лямбда-выражение получает ключ и значение каждой записи.
Синтаксис
TRANSFORM_VALUES((<key>, <value>) -> <new_value>, <map>)
Параметры
| Параметр | Описание |
|---|---|
<key> | Параметр лямбда-выражения, представляющий ключ записи в отображении. |
<value> | Параметр лямбда-выражения, представляющий значение записи в отображении. |
<new_value> | Выражение, формирующее значение в возвращаемом отображении. |
<map> | Выражение типа MAP<K, V>. |
Возвращаемое значение
Возвращает MAP<K, V2>, где V2 — тип значения, возвращаемого лямбда-выражением.
- Ключи входного отображения сохраняются без изменений.
- Если
<map>пусто, возвращает пустое отображение. - Если
<map>имеет значениеNULL, возвращаетNULL. - Значение
NULL, возвращаемое лямбда-выражением, сохраняется.
Примеры
SELECT transform_values((k, v) -> v + k, map(1, 10, 2, 20)) AS result;
+--------------+
| result |
+--------------+
| {1:11, 2:22} |
+--------------+
SELECT transform_values(
(k, v) -> if(k = 1, CAST(NULL AS INT), v),
map(1, 10, 2, 20)) AS result;
+----------------+
| result |
+----------------+
| {1:null, 2:20} |
+----------------+
SELECT transform_values((k, v) -> v, CAST(NULL AS MAP<INT, INT>)) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+