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