Skip to main content

Внешние словари

Существует возможность подключать собственные словари из различных источников данных. Источником данных для словаря может быть локальный текстовый/исполняемый файл, HTTP(s) ресурс или другая СУБД. Подробнее смотрите в разделе «Источники внешних словарей».

ClickHouse:

  • Полностью или частично хранит словари в оперативной памяти.
  • Периодически обновляет их и динамически подгружает отсутствующие значения.
  • Позволяет создавать внешние словари с помощью xml-файлов или DDL-запросов.

Конфигурация внешних словарей может находится в одном или нескольких xml-файлах. Путь к конфигурации указывается в параметре dictionaries_config.

Словари могут загружаться при старте сервера или при первом использовании, в зависимости от настройки dictionaries_lazy_load.

Системная таблица system.dictionaries содержит информацию о словарях, сконфигурированных на сервере. Для каждого словаря там можно найти:

  • Статус словаря.
  • Конфигурационные параметры.
  • Метрики, наподобие количества занятой словарём RAM или количества запросов к словарю с момента его успешной загрузки.

Конфигурационный файл словарей имеет вид:

<clickhouse>
<comment>Необязательный элемент с любым содержимым. Игнорируется сервером ClickHouse.</comment>

<!--Необязательный элемент, имя файла с подстановками-->
<include_from>/etc/metrika.xml</include_from>


<dictionary>
<!-- Конфигурация словаря -->
</dictionary>

...

<dictionary>
<!-- Конфигурация словаря -->
</dictionary>
</clickhouse>

В одном файле можно сконфигурировать произвольное количество словарей.

Если вы создаёте внешние словари DDL-запросами, то не задавайте конфигурацию словаря в конфигурации сервера.

:::note "Внимание"
Можно преобразовывать значения по небольшому словарю, описав его в запросе `SELECT` (см. функцию [transform](/docs/ru/sql-reference/functions/other-functions)). Эта функциональность не связана с внешними словарями.
:::

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