Skip to main content
dlt は、さまざまな、しかもしばしば雑然としたデータソースから、適切に構造化されたライブデータセットへデータを読み込むために、Python スクリプトに追加できるオープンソースのライブラリです。

ClickHouse で dlt をインストールする

ClickHouse の依存関係を含む dlt ライブラリをインストールするには:

セットアップガイド

1

dlt プロジェクトを初期化する

まず、次のように新しい dlt プロジェクトを初期化します。
このコマンドは、ソースとして chess、宛先として ClickHouse を使用するようにパイプラインを初期化します。
上記のコマンドを実行すると、.dlt/secrets.toml や ClickHouse 用の requirements ファイルなど、複数のファイルとディレクトリが生成されます。requirements ファイルに指定された必要な依存関係は、次のようにインストールできます。
または pip install dlt[clickhouse] を使用することもできます。これにより、dlt ライブラリと、ClickHouse を宛先として使用するために必要な依存関係がインストールされます。
2

ClickHouse データベースをセットアップする

データを ClickHouse に読み込むには、ClickHouse データベースを作成する必要があります。大まかな手順は次のとおりです。
  1. 既存の ClickHouse データベースを使用するか、新しく作成します。
  2. 新しいデータベースを作成するには、clickhouse-client コマンドラインツール、または任意の SQL クライアントを使用して ClickHouse サーバーに接続します。
  3. 次の SQL コマンドを実行して、新しいデータベースとユーザーを作成し、必要な権限を付与します。
3

認証情報を追加する

次に、以下のように .dlt/secrets.toml ファイルで ClickHouse の認証情報を設定します。
HTTP_PORThttp_port パラメーターは、ClickHouse サーバーの HTTP インターフェイスに接続する際に使用するポート番号を指定します。これは、ネイティブ TCP プロトコルで使用されるデフォルトの 9000 番ポートとは異なります。外部 ステージング を使用しない場合 (つまり、パイプラインで ステージング パラメーターを設定しない場合) は、http_port を設定する必要があります。これは、組み込みの ClickHouse ローカルストレージ ステージング で、HTTP 経由で ClickHouse と通信する clickhouse content ライブラリが使用されるためです。ClickHouse サーバーが、http_port で指定したポートで HTTP 接続を受け付けるよう設定されていることを確認してください。たとえば、http_port = 8443 を設定した場合、ClickHouse は 8443 番ポートで HTTP リクエストを待ち受けている必要があります。外部 ステージング を使用している場合は、このケースでは clickhouse-connect は使用されないため、http_port パラメーターは省略できます。
clickhouse-driver ライブラリで使われるものと同様のデータベース接続文字列を渡すこともできます。上記の認証情報は次のようになります。

書き込みディスポジション

すべての書き込みディスポジション に対応しています。 dlt ライブラリの書き込みディスポジションは、データを宛先にどのように書き込むかを定義するものです。書き込みディスポジションには、次の 3 種類があります。 Replace: このディスポジションでは、宛先のデータをリソースのデータで置き換えます。データをロードする前に、すべてのクラスとオブジェクトを削除し、スキーマを再作成します。詳しくはこちらをご覧ください。 Merge: この書き込みディスポジションでは、リソースのデータを宛先のデータにマージします。merge ディスポジションを使用する場合は、リソースに primary_key を指定する必要があります。詳しくはこちらをご覧ください。 Append: これはデフォルトのディスポジションです。primary_key フィールドは無視され、データは宛先内の既存データに追記されます。

データの読み込み

データは、データソースに応じて最も効率的な方法で ClickHouse に読み込まれます。
  • ローカルファイルの場合は、clickhouse-connect ライブラリを使用して、INSERT コマンドでファイルを ClickHouse テーブルに直接読み込みます。
  • S3, Google Cloud Storage, または Azure Blob Storage などのリモートストレージ上のファイルの場合は、s3、gcs、azureBlobStorage などの ClickHouse テーブル関数を使用してファイルを読み込み、データをテーブルに挿入します。

データセット

Clickhouse は 1 つのデータベース内で複数のデータセットをサポートしていませんが、dlt はいくつかの理由からデータセットを前提としています。Clickhousedlt で利用できるようにするため、Clickhouse データベース内で dlt によって生成されるテーブル名には、設定可能な dataset_table_separator で区切られたデータセット名のプレフィックスが付きます。さらに、データを一切含まない特別なセンチネルテーブルが作成され、dlt はこれによって Clickhouse の宛先にどの仮想データセットがすでに存在するかを認識できます。

サポートされているファイルフォーマット

  • jsonl は、直接ロードとステージングの両方で推奨されるフォーマットです。
  • parquet は、直接ロードとステージングの両方でサポートされています。
clickhouse 宛先には、デフォルトの SQL 宛先とはいくつか異なる点があります。
  1. ClickHouse には実験的な object データ型がありますが、やや予測不能な挙動をすることがあるため、dlt の clickhouse 宛先では複雑なデータ型はテキストカラムにロードされます。この機能が必要な場合は、Slack コミュニティでご相談ください。追加を検討します。
  2. ClickHousetime データ型をサポートしていません。timetext カラムにロードされます。
  3. ClickHousebinary データ型をサポートしていません。代わりに、バイナリデータは text カラムにロードされます。jsonl からロードする場合、バイナリデータは base64 文字列になり、parquet からロードする場合は binary オブジェクトが text に変換されます。
  4. ClickHouse では、データがすでに入っているテーブルに対しても、NULL 不可のカラムを追加できます。
  5. ClickHouse は、float または double データ型を使用すると、特定の条件下で丸め誤差が生じることがあります。丸め誤差を許容できない場合は、decimal データ型を使用してください。たとえば、ローダーのファイルフォーマットを jsonl に設定して値 12.7001 を double カラムにロードすると、確実に丸め誤差が発生します。

サポートされているカラムヒント

ClickHouse は、以下のカラムヒントをサポートしています。
  • primary_key - このカラムを主キーの一部としてマークします。複数のカラムにこのヒントを設定することで、複合主キーを作成できます。

テーブルエンジン

デフォルトでは、ClickHouse ではテーブルは ReplicatedMergeTree テーブルエンジンで作成されます。clickhouse アダプターでは、table_engine_type を使用して別のテーブルエンジンを指定できます。
サポートされている値は次のとおりです。
  • merge_tree - MergeTree エンジンを使用してテーブルを作成します
  • replicated_merge_tree (デフォルト) - ReplicatedMergeTree エンジンを使用してテーブルを作成します

ステージングのサポート

ClickHouse は、ファイルのステージング先として Amazon S3、Google Cloud Storage、Azure Blob Storage をサポートしています。 dlt は Parquet または jsonl ファイルをステージング先にアップロードし、ClickHouse のテーブル関数を使用して、ステージングされたファイルからデータを直接読み込みます。 ステージング先の認証情報を設定する方法については、filesystem のドキュメントを参照してください。 ステージングを有効にしてパイプラインを実行するには:

Google Cloud Storage をステージング領域として使用する

dlt は、ClickHouse にデータを読み込む際のステージング領域として Google Cloud Storage (GCS) を使用することをサポートしています。これは、dlt が内部的に使用する ClickHouse の GCS テーブル関数 によって自動的に処理されます。 ClickHouse の GCS テーブル関数 は、Hash-based Message Authentication Code (HMAC) キーを使用した認証のみをサポートしています。これを有効にするため、GCS は Amazon S3 API をエミュレートする S3 互換性モードを提供しています。ClickHouse はこれを利用して、S3 インテグレーション経由で GCS バケットにアクセスできるようにしています。 dlt で HMAC 認証を使用した GCS ステージングを設定するには:
  1. Google Cloud ガイド に従って、GCS のサービス アカウント用の HMAC キーを作成します。
  2. dlt プロジェクトの config.toml にある ClickHouse の宛先設定で、HMAC キーに加えて、サービス アカウントの client_emailproject_idprivate_key を設定します:
注: HMAC キー bashgcp_access_key_idgcp_secret_access_key) に加えて、[destination.filesystem.credentials] の下で、サービスアカウントの client_emailproject_idprivate_key も指定する必要があります。これは、GCS のステージング サポートが現在は一時的な回避策として実装されており、まだ最適化されていないためです。 dlt はこれらの認証情報を ClickHouse に渡し、ClickHouse が認証と GCS へのアクセスを処理します。 今後、ClickHouse の dlt 宛先向け GCS ステージング設定を簡素化し、改善するための作業が活発に進められています。正式な GCS ステージング サポートは、以下の GitHub issue で追跡されています。
  • ファイルシステム宛先を gcs の s3 互換性モードで動作させる
  • Google Cloud Storage ステージング エリアのサポート

dbt サポート

dbt とのインテグレーションは、通常 dbt-clickhouse を通じてサポートされています。

dlt 状態の同期

この宛先は、dlt の状態同期に完全対応しています。
最終更新日 2026年7月24日