Настройка ClickHouse
Некоторая основная функциональность может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с исходным кодом для каждого из перечисленных ниже репозиториев.
- Поддерживается: Community
- Авторы: Geoff Genz & Bentsi Leviav
- Репозиторий на GitHub: ClickHouse/dbt-clickhouse
- Пакет на PyPI:
dbt-clickhouse
- Канал в Slack: #db-clickhouse
- Поддерживаемая версия dbt Core: v0.19.0 и новее
- Поддержка dbt Cloud: Not Supported
- Минимальная версия платформы данных: ?
Установка dbt-clickhouse
Используйте pip
для установки адаптера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core
и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core
. Это связано с тем, что адаптеры и версии dbt Core были разделе ны, и мы больше не хотим перезаписывать существующие установки dbt-core.
Используйте следующую команду для установки:
Конфигурация dbt-clickhouse
Для конфигурации, специфичной для Clickhouse, пожалуйста, обратитесь к конфигурациям Clickhouse.
Подключение к ClickHouse с помощью dbt-clickhouse
Чтобы подключиться к ClickHouse из dbt, вам нужно добавить профиль в ваш файл profiles.yml
. Профиль ClickHouse соответствует следующему синтаксису:
<profile-name>:
target: <target-name>
outputs:
<target-name>:
type: clickhouse
schema: [ default ] # База данных ClickHouse для моделей dbt
# необязательно
driver: [ http ] # http или native. Если не настроено, это будет определено автоматически на основе настройки порта
host: [ localhost ]
port: [ 8123 ] # По умолчанию 8123, 8443, 9000, 9440 в зависимости от настроек безопасности и драйвера
user: [ default ] # Пользователь для всех операций с базой данных
password: [ <empty string> ] # Пароль для пользователя
cluster: [ <empty string> ] # Если настроено, некоторые операции DDL/таблицы будут выполняться с использованием клаузулы `ON CLUSTER` с использованием этого кластера. Для работы распределенных материализаций требуется эта настройка. Подробнее см. в следующем разделе о кластере ClickHouse.
verify: [ True ] # Проверка сертификата TLS, если используется TLS/SSL
secure: [ False ] # Использовать TLS (нативный протокол) или HTTPS (http-протокол)
retries: [ 1 ] # Количество попыток повторить "восстанавливаемое" исключение базы данных (например, ошибку 503 'Service Unavailable')
compression: [ <empty string> ] # Использовать сжатие gzip, если истинно (http), или тип сжатия для нативного соединения
connect_timeout: [ 10 ] # Тайм-аут в секундах для установления соединения с ClickHouse
send_receive_timeout: [ 300 ] # Тайм-аут в секундах для получения данных от сервера ClickHouse
cluster_mode: [ False ] # Использовать специфические настройки, предназначенные для улучшения работы с реплицированными базами данных (рекомендуется для ClickHouse Cloud)
use_lw_deletes: [ False ] # Использовать стратегию `delete+insert` как стратегию по умолчанию для инкрементальных стратегий.
check_exchange: [ True ] # Проверка поддержки ClickHouse команды атомарного обмена таблицами. (Не требуется для большинства версий ClickHouse)
local_suffix: [ _local ] # Суффикс таблицы локальных таблиц на шардах для распределенных материализаций.
local_db_prefix: [ <empty string> ] # Префикс базы данных локальных таблиц на шардах для распределенных материализаций. Если пусто, используется та же база данных, что и распределенная таблица.
allow_automatic_deduplication: [ False ] # Включить автоматическое удаление дубликатов ClickHouse для реплицированных таблиц
tcp_keepalive: [ False ] # Только для нативного клиента, указать конфигурацию TCP keepalive. Указать пользовательские настройки keepalive как [idle_time_sec, interval_sec, probes].
custom_settings: [ { } ] # Словарь/отображение пользовательских настроек ClickHouse для соединения - по умолчанию пусто.
# Настройки соединения для нативного драйвера (clickhouse-driver)
sync_request_timeout: [ 5 ] # Тайм-аут для пинга сервера
compress_block_size: [ 1048576 ] # Размер блока сжатия, если сжатие включено
Описание полей профиля ClickHouse
Поле | Описание |
---|---|
type | Это поле должно быть включено либо в profiles.yml , либо в файл dbt_project.yml . Должно быть установлено значение clickhouse . |
schema | Обязательно. Имя базы данных ClickHouse. Модель dbt database.schema.table несовместима с ClickHouse, так как ClickHouse не поддерживает схему. Поэтому мы используем простую модель schema.table, где schema — это база данных ClickHouse. Мы не рекомендуем использовать базу данны х default . |
driver | Необязательно. Интерфейс клиента ClickHouse, http или native . По умолчанию http , если port не установлен на 9440 или 9400, в этом случае предполагается native драйвер. |
host | Необязательно. Имя хоста соединения. По умолчанию localhost . |
port | Необязательно. Номер порта сервера ClickHouse. По умолчанию 8123/8443 (безопасный), если драйвер http , и 9000/9440 (безопасный), если драйвер native . |
user | Обязательно. Имя пользователя ClickHouse с достаточными правами для доступа к указанной schema . |
password | Обязательно. Пароль, связанный с указанным user . |
cluster | Необязательно. Если установлено, некоторые операции DDL/таблицы будут выполняться с использованием клаузулы ON CLUSTER с использованием этого кластера. Для работы распределенных материализаций требуется эта настройка. Подробнее см. в следующем разделе о кластере ClickHouse. |
verify | Необязательно. Для соединений (secure=True ) проверка сертификата TLS сервера ClickHouse, включая соответствие имени хоста, срок де йствия и подпись доверенным центром сертификации. По умолчанию True. |
secure | Необязательно. Является ли соединение (либо http, либо native) защищенным с помощью TLS. Это преобразует соединение http-драйвера в https, а соединение native-драйвера в нативный протокол ClickHouse через TLS. По умолчанию False. |
retries | Необязательно. Количество попыток повторить начальную попытку соединения, если ошибка кажется восстанавливаемой. |
compression | Необязательно. Использовать сжатие в соединении. По умолчанию False . Если установлено True для HTTP, это включает сжатие gzip. Если установлено True для нативного протокола, это включает сжатие lz4. Другие допустимые значения — lz4hc и zstd только для нативного драйвера. |
connect_timeout | Необязательно. Тайм-аут соединения в секундах. По умолчанию 10 секунд. |
send_receive_timeout | Необязательно. Тайм-аут для получения данных от или отправки данных в ClickHouse. По умолчанию 5 минут (300 секунд) |
cluster_mode | Необязательно. Добавить настройки соединения для улучшения совместимости с кластерами, использу ющими движок реплицированной базы данных. По умолчанию False. |
use_lw_deletes | Необязательно. Если доступны экспериментальные легковесные удаления ClickHouse, использовать стратегию delete+insert как стратегию по умолчанию для инкрементальных материализаций. По умолчанию False (использовать устаревшую стратегию). |
check_exchange | Необязательно. При подключении к ClickHouse, если этот параметр True , DBT проверит, поддерживает ли сервер ClickHouse атомарный обмен таблицами. Использование атомарного обмена (если доступно) улучшает надежность и параллелизм. Эта проверка не требуется для ClickHouse, работающего на последних версиях операционной системы Linux, и в этих случаях может быть отключена, установив check_exchange в False , чтобы избежать дополнительной нагрузки при запуске. По умолчанию True . |
local_suffix | Необязательно. Суффикс таблицы локальных таблиц на шардах для распределенных материализаций. По умолчанию '_local'. |
local_db_prefix | Необязательно. Префикс базы данных локальных таблиц на шардах для распределенных материализаций. Если пусто, используется та же база данных, что и распределенная таблица. По умолчанию пустая строка. |
allow_automatic_deduplication | Необязательно. Включить автоматическое удаление дубликатов ClickHouse для реплицированных таблиц. По умолчанию False. |
tcp_keepalive | Необязательно. Только для нативного клиента, указать конфигурацию TCP keepalive. Указать пользовательские настройки keepalive как idle_time_sec , interval_sec , probes . По умолчанию False. |
sync_request_timeout | Необязательно. Тайм-аут для запроса пинга соединения (только нативное соединение). По умолчанию 5 секунд. |
compress_block_size | Необязательно. Размер блока сжатия (в байтах) при использовании сжатия с нативным драйвером. По умолчанию 1MB |
database_engine | Необязательно. Движок базы данных, используемый при создании новых схем ClickHouse (баз данных). Если не установлено (по умолчанию), новые базы данных будут использовать движок базы данных ClickHouse по умолчанию (обычно Atomic). |
custom_settings | Необязательно. Отображение специфических для ClickHouse пользовательских настроек, используемых с соединением. См. документацию ClickHouse для поддерживаемых настроек. |
Устранение неполадок соединения
Если у вас возникли проблемы с подключением к ClickHouse из dbt, убедитесь, что выполнены следующие условия:
- Движок должен быть одним из поддерживаемых движков.
- У вас должны быть достаточные права для доступа к базе данных.
- Если вы не используете движок таблицы по умолчанию для базы данных, вы должны указать движок таблицы в конфигурации вашей модели.