メインコンテンツへスキップ
クエリ API エンドポイント機能を使用すると、ClickHouse Cloud コンソールで任意の保存クエリから API エンドポイントを直接作成できます。ネイティブドライバーで ClickHouse Cloud サービスに接続しなくても、HTTP 経由で API エンドポイントにアクセスして保存クエリを実行できます。

前提条件

先に進む前に、次のものを用意してください。
  • 適切な権限を持つ API キー
  • Admin Console ロール
まだ持っていない場合は、このガイドに従って API キーを作成 してください。
最小権限API エンドポイントにクエリを実行するには、API キーに Member 組織ロールと Query Endpoints サービスアクセスが必要です。データベースロールは、エンドポイントの作成時に設定されます。
1

保存クエリを作成する

すでに保存クエリがある場合は、この手順はスキップできます。新しいクエリタブを開きます。デモ用として、約 45 億件のレコードを含む youtube dataset を使用します。 Cloud サービス上にテーブルを作成してデータを挿入するには、“Create table” セクションの手順に従ってください。
LIMIT で行数を制限するこのサンプルデータセットのチュートリアルでは大量のデータ、つまり 46.5 億行を挿入するため、挿入完了までに時間がかかることがあります。 このガイドでは、LIMIT 句を使って挿入するデータ量を少なくすることを推奨します。 たとえば 1000 万行です。
クエリ例として、ユーザーが入力した year パラメータに基づき、動画あたりの平均視聴回数が最も多い uploader 上位 10 件を返します。
このクエリには、上のスニペットで強調表示されているパラメータ (year) が含まれています。 クエリパラメータは、パラメータの型とともに { } を使って指定できます。 SQL Console のクエリエディタは ClickHouse のクエリパラメータ式を自動的に検出し、各パラメータ用の入力欄を表示します。このクエリが正しく動作することを確認するため、SQL エディタ右側のクエリ変数入力ボックスで 2010 を指定して、手早く実行してみましょう。次に、クエリを保存します。保存クエリの詳細については、“Saving a query” セクションを参照してください。
2

クエリ API エンドポイントを設定する

クエリ API エンドポイントは、クエリビューで Share ボタンをクリックし、API Endpoint を選択することで直接設定できます。 すると、どの API キー にエンドポイントへのアクセスを許可するかを指定するよう求められます。API キー を選択すると、次の設定を求められます。
  • クエリの実行に使用するデータベースロールを選択する (Full accessRead only、または Create a custom role)
  • クロスオリジンリソース共有 (CORS) で許可するドメインを指定する
これらのオプションを選択すると、クエリ API エンドポイントが自動的にプロビジョニングされます。テストリクエストを送信できるように、curl コマンドの例が表示されます。インターフェイスに表示される curl コマンドを、便宜上以下にも示します。
3

クエリ API パラメータ

クエリ内のクエリパラメータは、{parameter_name: type} という構文で指定できます。これらのパラメータは自動的に検出され、リクエスト payload の例には、それらのパラメータを渡すための queryVariables オブジェクトが含まれます。
4

テストと監視

クエリ API エンドポイントを作成したら、curl やその他の HTTP クライアントを使って動作をテストできます。最初のリクエストを送信すると、Share ボタンのすぐ右側に新しいボタンが表示されます。これをクリックすると、クエリに関する監視データを含む flyout が開きます。

実装の詳細

このエンドポイントでは、保存済みのクエリ API エンドポイントに対してクエリを実行できます。 複数のバージョン、柔軟なレスポンスフォーマット、パラメータ化されたクエリ、オプションのストリーミングレスポンス (バージョン 2 のみ) をサポートしています。 エンドポイント:

HTTP メソッド

GET を使用する場合:
  • 複雑にネストしたデータを含まないシンプルなクエリ
  • パラメータを簡単に URL エンコードできる
  • HTTP GET のセマンティクスによりキャッシュの恩恵を受けられる
POST を使用する場合:
  • 複雑なクエリ変数 (配列、オブジェクト、長い文字列)
  • セキュリティやプライバシーの観点からリクエストボディの使用が望ましい場合
  • ファイルのストリーミングアップロードや大容量データ

認証

必須: はい 方法: OpenAPI Key/Secret を使用する Basic 認証 権限: クエリエンドポイントに対する適切な権限

リクエスト設定

URLパラメータ

クエリパラメータ

ヘッダー


リクエストボディ

パラメータ

対応フォーマット


レスポンス

成功

ステータス: 200 OK クエリは正常に実行されました。

エラーコード

エラー処理のベストプラクティス

  • リクエストに有効な認証情報が含まれていることを確認する
  • 送信前に queryEndpointIdqueryVariables を検証する
  • 適切なエラーメッセージを表示するよう、適切にエラー処理を実装する

エンドポイントのバージョンのアップグレード

バージョン 1 からバージョン 2 にアップグレードするには、次の 2 つのヘッダーを含めます。
  1. x-clickhouse-endpoint-upgrade ヘッダーを 1 に設定する
  2. x-clickhouse-endpoint-version ヘッダーを 2 に設定する
これにより、以下を含むバージョン 2 の機能を利用できるようになります。
  • すべての ClickHouse フォーマットのサポート
  • レスポンスのストリーミング機能
  • パフォーマンスと機能の向上

基本的なリクエスト

クエリ API エンドポイント用の SQL:

バージョン 1

バージョン 2

レスポンス

クエリ変数とバージョン 2 を使用する JSONCompactEachRow フォーマットでのリクエスト

クエリ API エンドポイント用の SQL:
レスポンス

テーブルにデータを挿入する、クエリ変数に配列を含むリクエスト

テーブル SQL:
クエリ API エンドポイント用の SQL:

ClickHouse の設定 max_threads を 8 にしたリクエスト

クエリ API エンドポイント用の SQL:

レスポンスを取得し、ストリームとして解析する

クエリ API エンドポイント用の SQL:
出力

ファイルからテーブルにストリームを挿入する

以下の内容でファイル ./samples/my_first_table_2024-07-11.csv を作成してください。
CREATE TABLE SQL:
クエリ API エンドポイント用の SQL:
最終更新日 2026年7月2日