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

TRANSFORM_VALUES

SinceVersion dev

Описание​

Применяет лямбда-выражение к каждой записи в отображении и создаёт новое отображение с исходными ключами и преобразованными значениями. Лямбда-выражение получает ключ и значение каждой записи.

Синтаксис​

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 |
+--------+