前提条件
- 適切な権限を持つ API キー
- Admin Console ロール
最小権限API エンドポイントにクエリを実行するには、API キーに
Member 組織ロールと Query Endpoints サービスアクセスが必要です。データベースロールは、エンドポイントの作成時に設定されます。1
保存クエリを作成する
すでに保存クエリがある場合は、この手順はスキップできます。新しいクエリタブを開きます。デモ用として、約 45 億件のレコードを含む youtube dataset を使用します。 Cloud サービス上にテーブルを作成してデータを挿入するには、“Create table” セクションの手順に従ってください。クエリ例として、ユーザーが入力したyear パラメータに基づき、動画あたりの平均視聴回数が最も多い uploader 上位 10 件を返します。year) が含まれています。
クエリパラメータは、パラメータの型とともに { } を使って指定できます。
SQL Console のクエリエディタは ClickHouse のクエリパラメータ式を自動的に検出し、各パラメータ用の入力欄を表示します。このクエリが正しく動作することを確認するため、SQL エディタ右側のクエリ変数入力ボックスで 2010 を指定して、手早く実行してみましょう。次に、クエリを保存します。保存クエリの詳細については、“Saving a query” セクションを参照してください。2
クエリ API エンドポイントを設定する
クエリ API エンドポイントは、クエリビューで Share ボタンをクリックし、API Endpoint を選択することで直接設定できます。
すると、どの API キー にエンドポイントへのアクセスを許可するかを指定するよう求められます。API キー を選択すると、次の設定を求められます。- クエリの実行に使用するデータベースロールを選択する (
Full access、Read only、またはCreate a custom role) - クロスオリジンリソース共有 (CORS) で許可するドメインを指定する
curl コマンドの例が表示されます。インターフェイスに表示される curl コマンドを、便宜上以下にも示します。3
クエリ API パラメータ
クエリ内のクエリパラメータは、{parameter_name: type} という構文で指定できます。これらのパラメータは自動的に検出され、リクエスト payload の例には、それらのパラメータを渡すための queryVariables オブジェクトが含まれます。4
テストと監視
クエリ API エンドポイントを作成したら、curl やその他の HTTP クライアントを使って動作をテストできます。最初のリクエストを送信すると、Share ボタンのすぐ右側に新しいボタンが表示されます。これをクリックすると、クエリに関する監視データを含む flyout が開きます。実装の詳細
HTTP メソッド
GET を使用する場合:
- 複雑にネストしたデータを含まないシンプルなクエリ
- パラメータを簡単に URL エンコードできる
- HTTP GET のセマンティクスによりキャッシュの恩恵を受けられる
- 複雑なクエリ変数 (配列、オブジェクト、長い文字列)
- セキュリティやプライバシーの観点からリクエストボディの使用が望ましい場合
- ファイルのストリーミングアップロードや大容量データ
認証
リクエスト設定
URLパラメータ
クエリパラメータ
ヘッダー
リクエストボディ
パラメータ
対応フォーマット
レスポンス
成功
200 OK
クエリは正常に実行されました。
エラーコード
エラー処理のベストプラクティス
- リクエストに有効な認証情報が含まれていることを確認する
- 送信前に
queryEndpointIdとqueryVariablesを検証する - 適切なエラーメッセージを表示するよう、適切にエラー処理を実装する
エンドポイントのバージョンのアップグレード
x-clickhouse-endpoint-upgradeヘッダーを1に設定するx-clickhouse-endpoint-versionヘッダーを2に設定する
- すべての ClickHouse フォーマットのサポート
- レスポンスのストリーミング機能
- パフォーマンスと機能の向上
例
基本的なリクエスト
バージョン 1
- cURL
- JavaScript
バージョン 2
- GET(cURL)
- POST(cURL)
- JavaScript
レスポンス
クエリ変数とバージョン 2 を使用する JSONCompactEachRow フォーマットでのリクエスト
- GET(cURL)
- POST(cURL)
- JavaScript
レスポンス
テーブルにデータを挿入する、クエリ変数に配列を含むリクエスト
- cURL
- JavaScript
ClickHouse の設定 max_threads を 8 にしたリクエスト
- GET(cURL)
- POST(cURL)
- JavaScript
レスポンスを取得し、ストリームとして解析する
- TypeScript
出力
ファイルからテーブルにストリームを挿入する
./samples/my_first_table_2024-07-11.csv を作成してください。