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

TRANSFORM_KEYS

SinceVersion dev

Описание​

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

Синтаксис​

TRANSFORM_KEYS((<key>, <value>) -> <new_key>, <map>)

Параметры​

ПараметрОписание
<key>Параметр лямбда-выражения, представляющий ключ записи отображения.
<value>Параметр лямбда-выражения, представляющий значение записи отображения.
<new_key>Выражение, формирующее ключ в возвращаемом отображении. Его тип должен поддерживаться для ключей MAP.
<map>Выражение типа MAP<K, V>.

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

Возвращает MAP<K2, V>, где K2 обозначает тип, возвращаемый лямбда-выражением.

  • Значения входного отображения сохраняются без изменений.
  • Если <map> пусто, возвращается пустое отображение.
  • Если <map> имеет значение NULL, возвращается NULL.
  • Ключ со значением NULL, возвращённый лямбда-выражением, сохраняется.
  • Если несколько записей после преобразования получают один и тот же ключ, сохраняется значение из последней записи.

Примеры​

SELECT transform_keys((k, v) -> k + 10, map(1, 10, 2, 20)) AS result;
+----------------+
| result |
+----------------+
| {11:10, 12:20} |
+----------------+
SELECT transform_keys((k, v) -> 1, map(1, 10, 2, 20)) AS result;
+--------+
| result |
+--------+
| {1:20} |
+--------+
SELECT transform_keys((k, v) -> k, CAST(NULL AS MAP<INT, INT>)) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+