> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по созданию и настройке словарей

# CREATE DICTIONARY

export const CloudSupportedBadge = () => <div className="cloudBadge">
    <div className="cloudIcon">
      <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
      </svg>
    </div>
    {"Supported in ClickHouse Cloud"}
  </div>;

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

Словарь — это соответствие (`key -> attributes`), удобное для различных типов справочных списков.
ClickHouse поддерживает специальные функции для работы со словарями, которые можно использовать в запросах. Использовать словари через функции проще и эффективнее, чем `JOIN` со справочными таблицами.

Словари можно создавать двумя способами:

* [С помощью DDL-запроса](#creating-a-dictionary-with-a-ddl-query) (рекомендуется)
* [С помощью файла конфигурации](#creating-a-dictionary-with-a-configuration-file)

<div id="creating-a-dictionary-with-a-ddl-query">
  ## Создание словаря с помощью DDL-запроса
</div>

<CloudSupportedBadge />

Словари можно создавать с помощью DDL-запросов.
Это рекомендуемый способ, поскольку для словарей, созданных с помощью DDL:

* В файлы конфигурации сервера не добавляются дополнительные записи.
* Словари можно использовать как полноценные сущности, такие как таблицы или представления.
* Данные можно читать напрямую, используя знакомый синтаксис `SELECT`, а не табличные функции словарей. Обратите внимание: при прямом обращении к словарю через оператор `SELECT` кэшируемый словарь вернет только кэшированные данные, тогда как некэшируемый словарь вернет все хранимые в нем данные.
* Словари можно легко переименовывать.

<div id="syntax">
  ### Синтаксис
</div>

```sql theme={null}
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'
```

| Предложение                                                             | Описание                                                                                                                                            |
| ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Атрибуты](/ru/reference/statements/create/dictionary/attributes)       | Атрибуты словаря задаются аналогично столбцам таблицы. Единственное обязательное свойство — тип; все остальные могут иметь значения по умолчанию.   |
| PRIMARY KEY                                                             | Определяет ключевой столбец или столбцы для поиска в словаре. В зависимости от структуры один или несколько атрибутов могут быть указаны как ключи. |
| [`SOURCE`](/ru/reference/statements/create/dictionary/sources/overview) | Определяет источник данных для словаря (например, таблицу ClickHouse, HTTP, PostgreSQL).                                                            |
| [`LAYOUT`](/ru/reference/statements/create/dictionary/layouts/overview) | Определяет способ хранения словаря в памяти (например, `FLAT`, `HASHED`, `CACHE`).                                                                  |
| [`LIFETIME`](/ru/reference/statements/create/dictionary/lifetime)       | Задает интервал обновления словаря.                                                                                                                 |
| [`ON CLUSTER`](/ru/reference/statements/distributed-ddl)                | Создает словарь на кластере. Необязательно.                                                                                                         |
| `SETTINGS`                                                              | Дополнительные настройки словаря. Необязательно.                                                                                                    |
| `COMMENT`                                                               | Добавляет текстовый комментарий к словарю. Необязательно.                                                                                           |

<div id="creating-a-dictionary-with-a-configuration-file">
  ## Создание словаря с помощью файла конфигурации
</div>

<Note>
  Создание словаря с помощью файла конфигурации не поддерживается в ClickHouse Cloud. Используйте DDL (см. выше) и создайте словарь от имени пользователя `default`.
</Note>

Файл конфигурации словаря имеет следующий формат:

```xml theme={null}
<clickhouse>
    <comment>Необязательный элемент с произвольным содержимым. Игнорируется сервером ClickHouse.</comment>

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

    <dictionary>
        <!-- Конфигурация словаря. -->
        <!-- В файле конфигурации может быть любое количество секций dictionary. -->
    </dictionary>

</clickhouse>
```

Вы можете настроить любое количество словарей в одном файле.

<div id="related-content">
  ## Связанные материалы
</div>

* [Структуры](/ru/reference/statements/create/dictionary/layouts/overview) — Как словари хранятся в памяти
* [Источники](/ru/reference/statements/create/dictionary/sources/overview) — Подключение к источникам данных
* [Время жизни](/ru/reference/statements/create/dictionary/lifetime) — Настройка автоматического обновления
* [Атрибуты](/ru/reference/statements/create/dictionary/attributes) — Настройка ключей и атрибутов
* [Встроенные словари](/ru/reference/statements/create/dictionary/embedded) — Встроенные словари геобазы
* [system.dictionaries](/ru/reference/system-tables/dictionaries) — Системная таблица с информацией о словарях
