Map(K, V)
Тип данных Map(K, V) хранит пары «ключ–значение».
В отличие от других баз данных, в ClickHouse элементы типа Map не обязаны быть уникальными, то есть Map может содержать два элемента с одинаковым ключом.
(Причина в том, что Map внутренне реализован как Array(Tuple(K, V)).)
Вы можете использовать синтаксис m[k], чтобы получить значение для ключа k в Map m.
Также операция m[k] последовательно сканирует Map, то есть время выполнения линейно зависит от размера Map.
Параметры
K— тип ключей Map. Произвольный тип, за исключением Nullable и LowCardinality, совмещённых с типами Nullable.V— тип значений Map. Произвольный тип.
Примеры
Создайте таблицу со столбцом типа Map:
Чтобы выбрать значения key2:
Результат:
Если запрошенный ключ k отсутствует в отображении (map), m[k] возвращает значение по умолчанию для типа значения, например 0 для целочисленных типов и '' для строковых типов.
Чтобы проверить, существует ли ключ в отображении, можно использовать функцию mapContains.
Результат:
Преобразование Tuple в Map
Значения типа Tuple() можно привести к значениям типа Map() с помощью функции CAST:
Пример
Запрос:
Результат:
Чтение подстолбцов Map
Чтобы избежать чтения всего столбца Map, в некоторых случаях можно использовать подстолбцы keys и values.
Пример
Запрос:
Результат:
См. также
- Функция map()
- Функция CAST()
- -Map-комбинатор для типа данных Map