Последнее обновление
TRANSFORM_KEYS
Описание
Применяет лямбда-выражение к каждой записи отображения и создаёт новое отображение с преобразованными ключами и исходными значениями. Лямбда-выражение получает ключ и значение каждой записи.
Синтаксис
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 |
+--------+