概要
ClickHouse と Apache Airflow の公式統合が利用可能になり、Airflow の実行環境を問わず、ClickHouse のデータワークフローのオーケストレーションと管理がより容易になりました。すでに多くの ClickHouse ユーザーが、本番環境でこの新しい Apache Airflow プロバイダーを活用しています。
はじめに
多くの ClickHouse ユーザーは、データパイプラインをオーケストレーションしてデータの取り込みや変換、定期的な分析ジョブをスケジュールするオープンソースの標準ツールとして、Apache Airflow を活用しています。これまで両者を接続するには、コミュニティプラグインをインストールするか、独自の統合コードを作成するのが一般的でした。
このたび、Airflow のアップストリームに公式の ClickHouse プロバイダー apache-airflow-providers-clickhousedb が追加されました。ClickHouse Connect を介して HTTP(S) 経由で接続し、Airflow の共通 SQL オペレーターに対応するほか、一括処理やクライアント固有の操作を行うための ClickHouse フックも備えています。本記事では、このプロバイダーのインストール方法、接続の設定手順、セルフマネージドの Airflow 環境や Astronomer などのマネージドプラットフォーム上で同じワークフローを実行する方法について解説します。
コミュニティでの発足の経緯
今回のリリース以前は、ClickHouse コミュニティが独自にこの課題を解決していました。Airflow にネイティブな ClickHouse 連携機能がなかった当時、Anton Bryzgalov 氏(bryzgaloff)が airflow-clickhouse-plugin を開発しました。同氏が長年にわたりメンテナンスを続けた結果、このプラグインは Airflow および ClickHouse コミュニティにおけるデファクトスタンダードとなり、PyPI でもダウンロード数上位 1% に入るパッケージへと成長しました。ClickHouse 社内のデータウェアハウスチームが構築した社内ツールの設計にも、このプラグインの慣例が反映されています。ClickHouse のエコシステムが現在のように充実しているのは、こうした貢献のおかげです。Anton 氏に深く感謝いたします。
公式にメンテナンスされた統合環境を求めるチームにとって、このプロバイダーへの移行は自然なアップグレードパスとなります。今後のリソース投下や新機能の追加はこちらを中心に行われますが、移行作業の大半は機械的な手順で完了します。プロバイダーをインストールし、接続先を HTTP(S) ポートに向けたうえで、DAG 内で標準の SQLExecuteQueryOperator を使用するだけです。
公式プロバイダーを提供する理由
ClickHouse では絶えず新機能をリリースしています。アップストリームに公式プロバイダーが存在することで、外部の追従を待つことなく、データベース本体の進化に足並みを揃えて統合機能を提供できるようになります。
今回の実装にあたっては、以下のような設計方針を採用しました。
- ClickHouse Connect 上に構築: プロバイダーは、ClickHouse 社内でメンテナンスしている Python クライアント
clickhouse-connectを使い、HTTP インターフェース経由で接続します。クライアントの高速化や機能追加が行われると、プロバイダーにもそのまま反映されます。 - Airflow の共通 SQL フレームワークを採用: プロバイダーは
apache-airflow-providers-common-sql経由で ClickHouse を公開するため、標準のSQLExecuteQueryOperatorで DDL、DML、分析クエリを処理できます。ClickHouse 固有のオペレーターを新たに覚える必要はありません。 - それ以外の処理には専用フックを用意: 一括挿入やストリーミング、ClickHouse 固有のクライアント呼び出しには、
ClickHouseHookを介して直接アクセスできます。ネイティブな列指向の挿入パスを利用するbulk_insert_rowsメソッドも用意されています。
Airflow と ClickHouse の活用事例
現在、多くのユーザーが ClickHouse と Airflow を組み合わせて運用しています。この組み合わせは、ClickHouse がサービスを提供するほぼすべての業界に加え、ClickHouse 自身の社内スタックでも活用されています。
Astronomer との関係も双方向のものです。同社のデータオブザーバビリティ製品である Astro Observe は ClickHouse Cloud 上に構築されており、数十億件にのぼる Airflow ワークフローイベントを処理して、Airflow ユーザーにパイプラインのリアルタイムなインサイトを提供しています。数千社におよぶ企業に向けて Airflow 運用プラットフォームを提供するチーム自身が、自社の分析基盤として ClickHouse を選択しました。
ストリーミングプラットフォームやソーシャルメディア上で 1,200 万組以上のアーティストの動向を追跡する Chartmetric は、Airflow でオーケストレーションされたパイプラインと ClickHouse Cloud を組み合わせており、その中には 5 分ごとに 1,500 万行以上を取り込むプレイリストキャッシュパイプラインも含まれています。
ClickHouse 社内でもまったく同じパターンを採用しています。社内データウェアハウスは ClickHouse Cloud 上に構築されており、Airflow が 40 以上のデータソースにわたる 76 の DAG で挿入ジョブをスケジュールし、1 日あたり約 60 億行のデータを処理しています。週次メトリクスを確認する経営層から、日々の問い合わせに対応するプロダクト、営業、サポートの各チーム、さらには自社データ上で構築を進めているエージェント型ワークフローに至るまで、全社がこの基盤に依存しています。Airflow は、それらすべてにデータを供給し続ける中核コンポーネントとなっています。
Apache Airflow での始め方
オープンソースの Airflow を実行している場合、他のプロバイダーと同様にインストールできます。
pip install apache-airflow-providers-clickhousedbこれにより、apache-airflow-providers-common-sql と clickhouse-connect が自動的に導入されます。次に、接続を作成します。プロバイダーによって clickhouse 接続タイプが登録されるため、Airflow UI の Admin > Connections から設定するか、環境変数として定義できます。
export AIRFLOW_CONN_CLICKHOUSE_DEFAULT='{
"conn_type": "clickhouse",
"host": "abc123.clickhouse.cloud",
"port": 8443,
"login": "default",
"password": "secret",
"schema": "my_database",
"extra": {"secure": true}
}'ClickHouse Cloud や TLS が有効なクラスターの場合は、secure を true に設定し、ポート 8443 を指定します。

接続が完了すれば、DAG 自体は標準的な Airflow のコードと変わりません。
from datetime import datetime
from airflow import DAG
from airflow.providers.common.sql.operators.sql import SQLExecuteQueryOperator
with DAG(
dag_id="clickhouse_example",
start_date=datetime(2026, 1, 1),
default_args={"conn_id": "clickhouse_default"},
schedule="@daily",
catchup=False,
) as dag:
create_table = SQLExecuteQueryOperator(
task_id="create_table",
sql="""
CREATE TABLE IF NOT EXISTS events_daily (
day Date,
user_id String,
events UInt64
) ENGINE = MergeTree()
ORDER BY (day, user_id);
""",
)
aggregate = SQLExecuteQueryOperator(
task_id="aggregate_events",
sql="""
INSERT INTO events_daily
SELECT toDate(ts), user_id, count()
FROM events
WHERE toDate(ts) = yesterday()
GROUP BY toDate(ts), user_id;
""",
)
create_table >> aggregate
SQL オペレーターでは対応できないワークロードの場合、ClickHouseHook を使って基盤となるクライアントに直接アクセスできます。
from airflow.providers.clickhousedb.hooks.clickhouse import ClickHouseHook
hook = ClickHouseHook(clickhouse_conn_id="clickhouse_default")
hook.bulk_insert_rows(
table="events",
rows=[("user1", "click"), ("user2", "view")],
column_names=["user_id", "action"],
batch_size=1000,
)セッション設定、タスク単位でのデータベースオーバーライド、接続オプションを含む詳しいチュートリアルは、ドキュメントに記載されています。実際の動作を確認したい場合は、2026年5月に開催されたユーザーカンファレンス Open House 2026 のエコシステムセッション内で、Bentsi Leviav によるプロバイダーのデモをご覧ください。
Astronomer での始め方
Astronomer は、多くのユーザーが本番環境で運用しているマネージド Airflow プラットフォームであり、Astro CLI はローカルに Airflow 環境を立ち上げる最も手軽な方法です。今回のプロバイダーは特別な設定なしでそのまま動作します。
まず、CLI をインストールしてプロジェクトの雛形を作成します。
brew install astro
astro dev init作成したプロジェクト内の requirements.txt にプロバイダーを追加します。
apache-airflow-providers-clickhousedb続いて、Airflow をローカルで起動します。
astro dev startこれで、手元のマシン上でコンテナとして Airflow のコンポーネントが立ち上がります。起動したら、ブラウザで localhost:8080 を開いて Airflow UI にアクセスし、Admin > Connections から ClickHouse タイプの接続を作成して、ClickHouse Cloud サービスまたはセルフホストのクラスターを指定します(TLS 接続用に secure: true とポート 8443 の設定をお忘れなく)。
前述のセクションの DAG を dags/ フォルダに配置すると UI 上に表示され、すぐにトリガーできるようになります。
Astro を利用している場合は、さらに簡単な接続方法があります。Astro UI の Environment Manager を使うと、ClickHouse 接続を一度作成するだけで、認証情報を Astro のマネージドシークレットバックエンドに保存し、ワークスペース内の全デプロイメントで共有できます。必要に応じてデプロイメントごとにオーバーライドすることも可能です。Astro CLI はそれらの接続情報をローカル環境にプルできるため、一度 ClickHouse を設定すればローカルでもホスト環境でも共通して使用できます。

本番環境へのリリースの準備が整ったら、astro deploy を実行するだけで、プロバイダーを含めた同一のプロジェクトが Astro のデプロイメントに反映されます。ローカルと本番環境の間で ClickHouse の設定を変更する必要はありません。
今後の展望
このプロバイダーは本日より利用可能であり、アーリーアダプターの手によってすでに本番環境で大規模に運用されています。今後の新機能の開発はコミュニティからの要望に基づいて優先順位を決定しますので、必要な機能があれば Issue や PR を通してお知らせください。
現在 Airflow で ClickHouse を運用している方は、ぜひ使い心地をお聞かせください。ClickHouse Community Slack でのご参加をお待ちしています。また、ClickHouse を初めて利用される場合は、300 ドル分の無料クレジットを活用して、数分で ClickHouse Cloud を試すことができます。皆様がどのようなシステムを構築されるか楽しみにしています。



