# Подключение к ClickHouse [Закрытая бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе") Совместимо с dbt v2

Доступно в v2 | Платформа dbt

dbt v2 в dbt platform поддерживает подключение к [ClickHouse Cloud](https://clickhouse.com/cloud) и к самостоятельно управляемым одноузловым экземплярам ClickHouse. Для среды, использующей это подключение, выберите канал выпуска dbt v2.

Закрытое бета-тестирование ClickHouse

Подключения к ClickHouse в v2 находятся на этапе закрытого бета-тестирования и не готовы к использованию в производственных средах. Чтобы запросить доступ, свяжитесь с представителем, который ведёт вашу учётную запись. Возможны небольшие ошибки, поэтому пока не используйте эти подключения в производственных средах. Перед подключением ознакомьтесь с разделом [Ограничения](#limitations).

## Права доступа к хранилищу для dbt v2

Пользователь ClickHouse, от имени которого подключается dbt v2, должен иметь возможность выполнять рабочие нагрузки dbt в целевой базе данных и читать системные таблицы, используемые для интроспекции.

### Необходимые объекты ClickHouse

Перед подключением следующие объекты должны существовать или быть доступны:

| Объект                                                                           | Назначение                                                                                                     |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Сервис (ClickHouse Cloud) или сервер (самостоятельно управляемый, с одним узлом) | Вычислительный ресурс                                                                                          |
| База данных                                                                      | Целевая база данных. В ClickHouse нет отдельного уровня схем, поэтому `schema` в dbt соответствует базе данных |
| Пользователь                                                                     | Пользователь базы данных для аутентификации                                                                    |

### Основные права доступа

Для основных возможностей dbt требуются следующие права доступа:

| Право доступа                                      | Объект                  | Назначение                                                                                                                                                                |
| -------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SELECT`                                           | Таблицы и представления | Чтение данных                                                                                                                                                             |
| `INSERT`                                           | Таблицы                 | Загрузка моделей, seed-файлов и снимков                                                                                                                                   |
| `ALTER`                                            | Таблицы                 | Изменение схемы (`on_schema_change`), индексы и проекции, комментарии (`persist_docs`), `REPLACE PARTITION` (`insert_overwrite`) и легковесные удаления (`delete+insert`) |
| `TRUNCATE`                                         | Таблицы                 | Полное обновление данных из seed-файлов                                                                                                                                   |
| `CREATE TABLE`, `CREATE VIEW`, `CREATE DICTIONARY` | База данных             | Создание материализаций, включая промежуточные и резервные объекты, используемые для атомарного пересоздания (`EXCHANGE TABLES`, `RENAME TABLE`)                          |
| `DROP TABLE`, `DROP VIEW`, `DROP DICTIONARY`       | База данных             | Удаление или замена объектов                                                                                                                                              |

### Операции с метаданными

dbt v2 читает следующие системные таблицы ClickHouse:

| Системная таблица       | Назначение                                                                                                          |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `system.tables`         | Получение списка объектов, построение каталога, обнаружение материализованных представлений, ссылающихся на таблицу |
| `system.columns`        | Метаданные столбцов для каталога и обнаружения изменений схемы                                                      |
| `system.databases`      | Проверка существования целевой базы данных                                                                          |
| `system.settings`       | Проверка доступности возможностей (легковесные удаления, `insert_distributed_sync`)                                 |
| `system.view_refreshes` | Проверка зависимостей обновляемых материализованных представлений                                                   |

ClickHouse фильтрует системные таблицы, оставляя только объекты, к которым у пользователя есть доступ, поэтому отдельно предоставлять права на эти таблицы не требуется.

### Управление базами данных

Права доступа для управления базами данных, необходимые при определённых условиях:

| Право доступа     | Объект | Когда требуется                                                         |
| ----------------- | ------ | ----------------------------------------------------------------------- |
| `CREATE DATABASE` | Сервер | Автоматическое создание целевой базы данных, если она ещё не существует |

Полное описание модели привилегий см. в разделе [Управление доступом в документации ClickHouse](https://clickhouse.com/docs/operations/access-rights).

## Поля подключения

При создании подключения к ClickHouse настройте следующие поля.

| Поле            | Описание                                                                                                                                                                                                                                                           | Тип    | Обязательное? | Пример                                  |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ------------- | --------------------------------------- |
| Server Hostname | URL конечной точки ClickHouse Cloud. Не указывайте `https://` и порт. Скопируйте адрес из раздела **Connect** в [консоли ClickHouse Cloud](https://clickhouse.com/docs/get-started/quickstarts/obtain-your-cloud-connection-details#find-your-connection-details). | Строка | Да            | `abc123.us-east-1.aws.clickhouse.cloud` |
| Port            | Порт для подключения. Адаптер dbt для ClickHouse подключается по HTTPS. Используйте порт `8443`. Порт `9440` (нативный протокол) не поддерживается адаптером.                                                                                                      | Строка | Нет           | `8443`                                  |
| Database        | Имя базы данных для подключения.                                                                                                                                                                                                                                   | Строка | Нет           | `default`                               |

[![Пример полей подключения к ClickHouse.](/img/docs/dbt-platform/clickhouse-connection.png?v=2 "Пример полей подключения к ClickHouse.")](#)Пример полей подключения к ClickHouse.

После сохранения подключения настройте среду разработки:

1. Создайте новый проект или откройте существующий.
2. В настройках проекта выберите **Environments** в меню слева и откройте свою среду разработки.
3. В разделе **Connection** выберите только что созданное подключение к ClickHouse.
4. Сохраните среду.

[![Выбор подключения к ClickHouse для среды разработки.](/img/docs/dbt-platform/clickhouse-environment.png?v=2 "Выбор подключения к ClickHouse для среды разработки.")](#)Выбор подключения к ClickHouse для среды разработки.

## Учётные данные для разработки и развёртывания

Каждый разработчик вводит личные учётные данные для разработки в разделе **Your profile** → **Credentials**. Для ClickHouse Cloud скопируйте имя пользователя и пароль из диалогового окна **Connect** в [консоли ClickHouse Cloud](https://clickhouse.com/docs/get-started/quickstarts/obtain-your-cloud-connection-details#find-your-connection-details). Обычно используется имя пользователя `default`.

| Поле        | Описание                                                                                                                       | Тип         | Обязательное? | Пример              |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------- | ------------------- |
| Username    | Имя пользователя базы данных.                                                                                                  | Строка      | Да            | `default`           |
| Password    | Пароль базы данных.                                                                                                            | Строка      | Нет           | DatabasePassword123 |
| Schema      | При разработке dbt создаёт ваши модели в схеме с этим именем. Используйте схему, уникальную для вашей личной среды разработки. | Строка      | Да            | dbtlabsdocstest     |
| Target name | Имя целевой конфигурации для этих учётных данных.                                                                              | Строка      | Нет           | `default`           |
| Threads     | Количество потоков для выполнения операций dbt.                                                                                | Целое число | Нет           | `4`                 |

[![Пример полей учётных данных пользователя ClickHouse.](/img/docs/dbt-platform/clickhouse-credentials.png?v=2 "Пример полей учётных данных пользователя ClickHouse.")](#)Пример полей учётных данных пользователя ClickHouse.

## Настройка

О том, как оптимизировать производительность с помощью настроек dbt, специфичных для платформы данных, см. в разделе [Настройки ClickHouse](https://docs.getdbt.tech/reference/resource-configs/clickhouse-configs.md).

Описание полей профиля ClickHouse, которым соответствуют поля подключения, см. в разделе [Настройка ClickHouse](https://docs.getdbt.tech/docs/local/connect-data-platform/clickhouse-setup.md).

## Ограничения

Подключение к ClickHouse находится на этапе закрытого бета-тестирования. В частности, в dbt platform:

* Semantic Layer dbt пока не поддерживается для подключений к ClickHouse.
* Доступна только аутентификация по имени пользователя и паролю. OAuth, аутентификация с помощью пары ключей, SSH-туннелирование и подключение по частной сети пока не поддерживаются для ClickHouse.

Здесь также действуют ограничения адаптера ClickHouse для dbt v2, включая ограничения в поддержке кластеров, предоставления прав доступа, `dbt clone`, `dbt source freshness` и анализа SQL. Полную информацию см. в разделе [Ограничения ClickHouse](https://docs.getdbt.tech/docs/local/connect-data-platform/clickhouse-setup.md#limitations).
