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

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 в некоторых случаях.

Пример

Запрос:

Результат:

Смотрите также