跳转到主要内容
查询 API 端点功能允许您直接根据 ClickHouse Cloud 控制台中任意已保存的 SQL 查询创建 API 端点。您可以通过 HTTP 访问这些 API 端点来执行已保存的查询,而无需使用原生驱动程序连接到您的 ClickHouse Cloud 服务。

前提条件

继续之前,请确保你具备:
  • 具有相应权限的 API 密钥
  • Admin Console 角色
如果你还没有 API 密钥,可以按照本指南创建 API 密钥
最低权限要查询 API 端点,API 密钥需要具备 Member 组织角色以及 Query Endpoints 服务访问权限。数据库角色会在你创建端点时配置。
1

创建已保存的查询

如果你已经有已保存的查询,可以跳过此步骤。打开一个新的查询标签页。为了演示,我们将使用 youtube dataset,其中包含大约 45 亿条记录。 按照 “Create table” 部分中的步骤,在你的 Cloud 服务上创建该表并向其中插入数据。
使用 LIMIT 限制行数示例数据集教程会插入大量数据——46.5 亿行,因此插入可能需要一些时间。 为便于完成本指南,我们建议使用 LIMIT 子句插入较少的数据, 例如 1000 万行。
作为示例查询,我们将返回用户输入的 year 参数对应年份中,按每个视频平均观看次数排序的前 10 位上传者。
请注意,此查询包含一个参数 (year) ,上面的代码片段中已高亮显示该参数。 你可以使用 { } 并结合参数类型来指定查询参数。 SQL 控制台查询编辑器会自动检测 ClickHouse 查询参数表达式,并为每个参数提供一个输入框。现在快速运行这个查询,在 SQL 编辑器右侧的查询变量输入框中指定年份 2010,确认它能够正常工作:接下来,保存该查询:有关已保存查询的更多文档,请参阅 “Saving a query” 部分。
2

配置查询 API 端点

可以直接在查询视图中点击 共享 按钮并选择 API Endpoint 来配置查询 API 端点。 系统会提示你指定哪些 API 密钥可以访问该端点:选择 API 密钥后,系统会要求你:
  • 选择用于运行该查询的数据库角色 (Full accessRead onlyCreate a custom role)
  • 指定允许跨源资源共享 (CORS) 的域名
选择这些选项后,查询 API 端点将自动完成配置。界面中会显示一个示例 curl 命令,便于你发送测试请求:为方便起见,界面中显示的 curl 命令如下:
3

查询 API 参数

查询参数可使用 {parameter_name: type} 语法来指定。系统会自动检测这些参数,示例请求载荷中将包含一个 queryVariables 对象,你可以通过它传递这些参数。
4

测试与监控

创建查询 API 端点后,你可以使用 curl 或任何其他 HTTP 客户端测试其是否正常工作:发送第一个请求后,共享 按钮右侧应会立即出现一个新按钮。点击它会打开一个弹出面板,其中包含该查询的监控数据:

实现细节

此端点用于执行您已保存的查询 API 端点中的查询。 它支持多个版本、灵活的响应格式、参数化查询,以及可选的流式响应 (仅限版本 2) 。 端点:

HTTP 方法

何时使用 GET:
  • 不涉及复杂嵌套数据的简单查询
  • 参数便于进行 URL 编码
  • 可利用 HTTP GET 语义带来的缓存优势
何时使用 POST:
  • 复杂的查询变量 (数组、对象、长字符串)
  • 出于安全或隐私考虑,优先使用请求体时
  • 流式文件上传或大体量数据

身份验证

必需:方法: 使用 OpenAPI Key/Secret 进行 Basic Auth 身份验证 权限: 访问查询端点所需的相应权限

请求配置

URL 参数

查询参数

请求头


请求体

参数

支持的格式


返回结果

成功

状态: 200 OK 查询已成功执行。

错误码

错误处理最佳实践

  • 确保请求中包含有效的身份验证凭据
  • 在发送前先验证 queryEndpointIdqueryVariables
  • 妥善处理错误,并提供恰当的错误消息

升级端点版本

要从版本 1 升级到版本 2:
  1. 添加值为 1x-clickhouse-endpoint-upgrade 请求头
  2. 添加值为 2x-clickhouse-endpoint-version 请求头
这样即可使用版本 2 的功能,包括:
  • 支持所有 ClickHouse 格式
  • 支持响应流式传输
  • 提升的性能和功能

示例

基本请求

查询 API 端点 SQL:

版本 1

版本 2

响应

使用查询变量和 JSONCompactEachRow 格式版本 2 发起请求

查询 API 端点 SQL:
响应

在查询变量中使用数组并向表中插入数据的请求

表 SQL:
查询 API 端点 SQL:

将 ClickHouse 设置 max_threads 设为 8 的请求

查询 API 端点 SQL:

请求并将响应作为stream解析

查询 API 端点 SQL:
输出

将文件中的stream插入表中

创建文件 ./samples/my_first_table_2024-07-11.csv,内容如下:
CREATE TABLE SQL:
查询 API 端点 SQL:
最后修改于 2026年7月2日