Словарь — это соответствие (key -> attributes), удобное для различных типов справочных списков.
ClickHouse поддерживает специальные функции для работы со словарями, которые можно использовать в запросах. Использовать словари через функции проще и эффективнее, чем JOIN со справочными таблицами.
Словари можно создавать двумя способами:
- С помощью DDL-запроса (рекомендуется)
- С помощью файла конфигурации
Создание словаря с помощью DDL-запроса
Доступно в ClickHouse Cloud
Словари можно создавать с помощью DDL-запросов. Это рекомендуемый способ, поскольку для словарей, созданных с помощью DDL:
- В файлы конфигурации сервера не добавляются дополнительные записи.
- Словари можно использовать как полноценные сущности, такие как таблицы или представления.
- Данные можно читать напрямую, используя знакомый синтаксис
SELECT, а не табличные функции словарей. Обратите внимание: при прямом обращении к словарю через операторSELECTкэшируемый словарь вернет только кэшированные данные, тогда как некэшируемый словарь вернет все хранимые в нем данные. - Словари можно легко переименовывать.
Синтаксис
CREATE [OR REPLACE] DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
key1 type1 [DEFAULT | EXPRESSION expr1] [IS_OBJECT_ID],
key2 type2 [DEFAULT | EXPRESSION expr2],
attr1 type2 [DEFAULT | EXPRESSION expr3] [HIERARCHICAL|INJECTIVE],
attr2 type2 [DEFAULT | EXPRESSION expr4] [HIERARCHICAL|INJECTIVE]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME({MIN min_val MAX max_val | max_val})
SETTINGS(setting_name = setting_value, setting_name = setting_value, ...)
COMMENT 'Comment'| Предложение | Описание |
|---|---|
| Атрибуты | Атрибуты словаря задаются аналогично столбцам таблицы. Единственное обязательное свойство — тип; все остальные могут иметь значения по умолчанию. |
| PRIMARY KEY | Определяет ключевой столбец или столбцы для поиска в словаре. В зависимости от структуры один или несколько атрибутов могут быть указаны как ключи. |
SOURCE |
Определяет источник данных для словаря (например, таблицу ClickHouse, HTTP, PostgreSQL). |
LAYOUT |
Определяет способ хранения словаря в памяти (например, FLAT, HASHED, CACHE). |
LIFETIME |
Задает интервал обновления словаря. |
ON CLUSTER |
Создает словарь на кластере. Необязательно. |
SETTINGS |
Дополнительные настройки словаря. Необязательно. |
COMMENT |
Добавляет текстовый комментарий к словарю. Необязательно. |
Создание словаря с помощью файла конфигурации
Файл конфигурации словаря имеет следующий формат:
<clickhouse>
<comment>An optional element with any content. Ignored by the ClickHouse server.</comment>
<!--Optional element. File name with substitutions-->
<include_from>/etc/clickhouse-server/substitutions.xml</include_from>
<dictionary>
<!-- Dictionary configuration. -->
<!-- There can be any number of dictionary sections in a configuration file. -->
</dictionary>
</clickhouse>Вы можете настроить любое количество словарей в одном файле.
- Структуры — Как словари хранятся в памяти
- Источники — Подключение к источникам данных
- Время жизни — Настройка автоматического обновления
- Атрибуты — Настройка ключей и атрибутов
- Встроенные словари — Встроенные словари геобазы
- system.dictionaries — Системная таблица с информацией о словарях