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