Skip to main content
Apache Airflow — это платформа с открытым исходным кодом для создания, планирования и мониторинга рабочих процессов как кода. Рабочие процессы определяются как ориентированные ациклические графы (DAG) задач, написанных на Python. Провайдер apache-airflow-providers-clickhousedb подключает Airflow к ClickHouse, позволяя выполнять запросы, создавать таблицы и загружать данные в рамках DAG. Он подключается через HTTP-интерфейс с помощью клиента clickhouse-connect и предоставляет доступ к ClickHouse через общий SQL-фреймворк Airflow, поэтому стандартный SQLExecuteQueryOperator обрабатывает DDL, DML и аналитические запросы без необходимости в специальном операторе для ClickHouse.

Установите провайдер

Установите провайдер в окружение, где работают планировщик Airflow и воркеры:
Провайдер зависит от apache-airflow-providers-common-sql и clickhouse-connect, которые устанавливаются вместе с ним. Чтобы передавать результаты запросов в DataFrame из pandas или polars, установите дополнительные опциональные компоненты:

Создайте подключение ClickHouse

Провайдер регистрирует тип подключения clickhouse. Создайте подключение в интерфейсе Airflow в разделе Admin > Connections или задайте его через CLI либо переменную окружения. В интерфейсе выберите ClickHouse в качестве типа подключения и заполните следующие поля: Для ClickHouse Cloud или любого самоуправляемого кластера с включенным TLS установите для secure значение true в поле Extra и используйте TLS-порт (8443).

Дополнительные параметры соединения

Провайдер предоставляет дополнительные параметры в виде отдельных полей в форме соединения. Если вместо этого вы задаёте соединение через URI, JSON или переменную окружения, укажите их как ключи в объекте JSON extra. Все они необязательны:

Настройте подключение без интерфейса

Задайте подключение через переменную окружения. Формат URI включает хост, учетные данные и базу данных:
Все компоненты URI должны быть URL-кодированы. Для TLS, тайм-аутов и настроек сеанса используйте форму JSON, в которой доступны поля Extra:
Все хуки и операторы используют идентификатор подключения clickhouse_default, если не указан другой.

Выполнение запросов с SQLExecuteQueryOperator

Укажите в conn_id оператора ваше подключение к ClickHouse. Следующий DAG создаёт таблицу, вставляет строки, считывает их обратно и удаляет таблицу:
Результаты запроса извлекаются с помощью обработчика handler, используемого по умолчанию (fetch_all_handler). Чтобы вернуть не весь результирующий набор, передайте другой обработчик, например fetch_one_handler, чтобы получить только первую строку.

Укажите разные базы данных для каждой задачи

Если одно соединение указывает на кластер, а отдельные задачи выполняют запросы к разным базам данных, переопределите базу данных через hook_params вместо создания отдельного соединения:

Используйте хук напрямую

Для задач, которые не укладываются в возможности SQL-оператора, — например, для массовой вставки, стриминга или вызовов клиента, специфичных для ClickHouse, — используйте ClickHouseHook в Python-задаче. Метод bulk_insert_rows этого хука использует нативный столбцовый путь вставки в clickhouse-connect, который на больших датасетах значительно быстрее, чем построчная вставка. Установите batch_size, чтобы ограничить пиковое потребление памяти при очень больших объёмах входных данных:
Вызовите get_client(), чтобы получить доступ к клиенту clickhouse-connect на низком уровне для всего, что хук не предоставляет напрямую:

Применить настройки сеанса

Передавайте настройки сеанса при создании хука — напрямую или через hook_params оператора. Настройки, переданные в конструктор, накладываются поверх любых session_settings, заданных в поле Extra подключения; при конфликте ключей приоритет имеют значения конструктора:
Последнее изменение 24 июля 2026 г.