メインコンテンツへスキップ
azureBlobStorage Table Function は、Azure Blob Storage から ClickHouse にデータをすばやく手軽に取り込む方法です。ただし、次の理由から 常に適しているとは限りません。
  • データが Azure Blob Storage に保存されていない場合があります。たとえば、Azure SQL Database、Microsoft SQL Server、または Cosmos DB に保存されている可能性があります。
  • セキュリティ ポリシーにより、Blob Storage への外部アクセスが 完全に禁止されている場合があります。たとえば、ストレージ アカウントがパブリック エンドポイントなしで厳しく制限されている場合です。
このような場合は、Azure Data Factory と ClickHouse HTTP インターフェイス を組み合わせて使用し、Azure の各種サービスから ClickHouse にデータを送信できます。 この方法ではデータの流れが逆になります。つまり、ClickHouse が Azure からデータを取得する代わりに、Azure Data Factory がデータを ClickHouse に送信します。この方法では通常、 ClickHouse インスタンスがパブリック インターネットからアクセス可能である必要があります。
Azure Data Factory のセルフホスト統合ランタイムを使用すれば、 ClickHouse インスタンスをインターネットに公開せずに済みます。この構成では、 データをプライベート ネットワーク経由で送信できます。ただし、これはこの 記事の範囲外です。詳しくは、公式ガイドを参照してください: セルフホスト統合ランタイムを作成して構成する

ClickHouse を REST サービスとして利用する

Azure Data Factory は、HTTP 経由で JSON フォーマットのデータを外部システムに送信できます。この機能を使うと、 ClickHouse HTTP インターフェイス を使用して ClickHouse に直接データを挿入できます。詳しくは、ClickHouse HTTP インターフェイスのドキュメント を参照してください。 この例では、宛先テーブルを指定し、入力データの フォーマットを JSON に設定し、timestamp の パースをより柔軟に行えるようにするオプションを含めるだけで十分です。
このクエリを HTTP リクエストの一部として送信するには、単に ClickHouse エンドポイントのクエリパラメータに URL エンコードされた文字列として渡します:
Azure Data Factory では、組み込みの encodeUriComponent 関数でこのエンコードを自動的に処理できるため、手動で行う必要はありません。
これで、この URL に JSON 形式のデータを送信できます。データはターゲットテーブルの 構造に一致している必要があります。以下は、3 つのカラム col_1col_2col_3 を持つ テーブルを想定した、curl を使った簡単な例です。
オブジェクトの JSON 配列、または JSON Lines (改行区切りの JSON オブジェクト) を送信することもできます。Azure Data Factory では JSON 配列フォーマットが使用されており、これは ClickHouse の JSONEachRow 入力と完全に適合します。 ご覧のとおり、このステップでは ClickHouse 側で特別なことをする必要はありません。HTTP インターフェイスには、 REST 風のエンドポイントとして動作するために必要な機能がすでにすべて備わっており、 追加の設定は不要です。 これで ClickHouse を REST エンドポイントのように動作させられるようになったので、次は Azure Data Factory でこれを利用するように設定します。 次のステップでは、Azure Data Factory インスタンスを作成し、ClickHouse インスタンスへの Linked Service を設定し、 REST sink 用の Dataset を定義し、Azure から ClickHouse にデータを送信する Copy Data アクティビティを作成します。

Azure Data Factory インスタンスの作成

このガイドでは、Microsoft Azure アカウントにアクセスでき、すでにサブスクリプションとリソース グループが設定済みであることを前提としています。Azure Data Factory がすでに設定されている場合は、この手順をスキップし、既存のインスタンスを使用して次の手順に進むことができます。
  1. Microsoft Azure Portal にログインし、 Create a resource をクリックします。
  2. 左側の Categories ペインで Analytics を選択し、 人気のサービス一覧から Data Factory をクリックします。
  3. サブスクリプションとリソース グループを選択し、新しい Data Factory インスタンスの名前を入力して、リージョンを選択し、バージョンは V2 のままにします。
  4. Review + Create をクリックし、続いて Create をクリックしてデプロイを開始します。
デプロイが正常に完了したら、新しい Azure Data Factory インスタンスを使い始めることができます。

新しい REST ベースのリンク サービスを作成する

  1. Microsoft Azure Portal にログインし、Data Factory インスタンスを開きます。
  2. Data Factory の概要ページで、Launch Studio をクリックします。
  3. 左側のメニューで Manage を選択し、Linked services に移動して、+ New をクリックし、新しいリンク サービスを作成します。
  4. New linked service の検索バーに REST と入力し、REST を選択して Continue をクリックし、REST コネクタのインスタンスを作成します。
  5. リンク サービスの構成ペインで新しいサービスの名前を入力し、Base URL フィールドをクリックしてから Add dynamic content をクリックします (このリンクはフィールドを選択したときにのみ表示されます) 。
  6. 動的コンテンツ ペインでは、パラメーター化された URL を作成できます。これにより、異なるテーブル用のデータセットを作成する際に後からクエリを定義できるため、リンク サービスを再利用できるようになります。
  7. フィルター入力の横にある ”+” をクリックして新しいパラメーターを追加し、名前を pQuery、型を String、デフォルト値を SELECT 1 に設定します。Save をクリックします。
  8. 式フィールドに次を入力し、OK をクリックします。your-clickhouse-url.com は実際の ClickHouse インスタンスのアドレスに置き換えてください。
  9. メイン フォームに戻り、基本認証を選択して、ClickHouse HTTP インターフェイスへの接続に使用するユーザー名とパスワードを入力し、Test connection をクリックします。すべてが正しく構成されていれば、成功メッセージが表示されます。
  10. Create をクリックしてセットアップを完了します。
これで、一覧に新しく登録された REST ベースのリンク サービスが表示されるはずです。

ClickHouse HTTP インターフェイス用の新しいデータセットを作成する

ClickHouse HTTP インターフェイス用のリンク サービスの設定が完了したので、 次に、Azure Data Factory がデータを ClickHouse に送信するために使用する データセットを作成します。 この例では、Environmental Sensors Data の一部のデータを挿入します。
  1. 任意の ClickHouse クエリコンソールを開きます。ClickHouse Cloud の web UI、 CLI クライアント、または普段クエリの実行に使用しているその他のインターフェイス のいずれでもかまいません。そこで、ターゲットテーブルを作成します。
  2. Azure Data Factory Studio で、左側のペインから Author を選択します。Dataset 項目にカーソルを合わせ、三点アイコンをクリックして、New dataset を選択します。
  3. 検索バーに REST と入力し、REST を選択して Continue をクリックします。 データセット名を入力し、前の手順で作成した リンク サービス を選択します。 OK をクリックしてデータセットを作成します。
  4. 作成したデータセットが、左側の Factory Resources ペインの Datasets セクションに表示されます。データセットを選択して、そのプロパティを 開きます。リンク サービスで定義した pQuery パラメーターが表示されるので、 Value テキストフィールドをクリックし、続いて Add dynamic content をクリックします。
  5. 開いたペインに、次のクエリを貼り付けます。
クエリ内のすべてのシングルクォート ' は、2 つのシングルクォート '' に置き換える必要があります。これは Azure Data Factory の式パーサーで 必要となるためです。これらをエスケープしないと、すぐにはエラーが表示 されないことがありますが、後でデータセットを使用または保存しようとした ときに失敗します。たとえば、'best_effort'''best_effort'' と 記述する必要があります。
  1. OK をクリックして式を保存します。Test connection をクリックします。 すべてが正しく設定されていれば、Connection successful メッセージが表示 されます。ページ上部の Publish all をクリックして変更を保存します。

例として使用するデータセットの準備

この例では、Environmental Sensors Dataset 全体ではなく、 Sensors Dataset Sampleで公開されている その一部のみを使用します。
このガイドでは要点に絞るため、Azure Data Factory でソース データセットを作成する具体的な手順については説明しません。サンプルデータは任意の ストレージサービスにアップロードできます。たとえば、Azure Blob Storage、Microsoft SQL Server、あるいは Azure Data Factory がサポートする別のファイル形式でもかまいません。
データセットを Azure Blob Storage (または任意のストレージ サービス) にアップロードします。次に、Azure Data Factory Studio で Factory Resources ペインを開きます。 アップロードしたデータを参照する新しいデータセットを作成します。変更を保存するには、 Publish all をクリックします。

ClickHouse にデータを転送するための Copy Activity の作成

入力データセットと出力データセットの設定が完了したので、次に Copy Data アクティビティを設定して、サンプルデータセットから ClickHouse の sensors テーブルにデータを転送します。
  1. Azure Data Factory Studio を開き、Author タブに移動します。 Factory Resources ペインで Pipeline にカーソルを合わせ、三点アイコンをクリックして、New pipeline を選択します。
  2. Activities ペインで Move and transform セクションを展開し、 Copy data アクティビティをキャンバスにドラッグします。
  3. Source タブを選択し、先ほど作成したソースデータセットを選択します。
  4. Sink タブに移動し、 sensors テーブル用に作成した ClickHouse データセットを選択します。Request method は POST に設定します。HTTP compression typeNone に設定されていることを確認してください。
HTTP 圧縮は、Azure Data Factory の Copy Data アクティビティでは正しく動作しません。有効にすると、Azure は 0 バイトだけの payload を送信します。これはおそらくサービス側のバグです。圧縮は必ず無効のままにしてください。
デフォルトのバッチサイズ 10,000 のままにするか、さらに大きくすることを推奨します。 詳しくは、 Selecting an Insert Strategy / Batch inserts if synchronous を参照してください。
  1. キャンバス上部の Debug をクリックして、パイプラインを実行します。しばらくすると、 アクティビティがキューに入り実行されます。すべてが正しく設定されていれば、 タスクは Success ステータスで完了するはずです。
  2. 完了したら、Publish all をクリックして、パイプラインとデータセットの変更を保存します。

追加リソース

最終更新日 2026年6月29日