Перейти к основному содержимому

Настройка 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 соответствует следующему синтаксису:

profiles.yml
<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, убедитесь, что выполнены следующие условия:

  • Движок должен быть одним из поддерживаемых движков.
  • У вас должны быть достаточные права для доступа к базе данных.
  • Если вы не используете движок таблицы по умолчанию для базы данных, вы должны указать движок таблицы в конфигурации вашей модели.
0