前提条件
- 具有相应权限的 API 密钥
- Admin Console 角色
最低权限要查询 API 端点,API 密钥需要具备
Member 组织角色以及 Query Endpoints 服务访问权限。数据库角色会在你创建端点时配置。1
创建已保存的查询
如果你已经有已保存的查询,可以跳过此步骤。打开一个新的查询标签页。为了演示,我们将使用 youtube dataset,其中包含大约 45 亿条记录。 按照 “Create table” 部分中的步骤,在你的 Cloud 服务上创建该表并向其中插入数据。作为示例查询,我们将返回用户输入的year 参数对应年份中,按每个视频平均观看次数排序的前 10 位上传者。year) ,上面的代码片段中已高亮显示该参数。
你可以使用 { } 并结合参数类型来指定查询参数。
SQL 控制台查询编辑器会自动检测 ClickHouse 查询参数表达式,并为每个参数提供一个输入框。现在快速运行这个查询,在 SQL 编辑器右侧的查询变量输入框中指定年份 2010,确认它能够正常工作:接下来,保存该查询:有关已保存查询的更多文档,请参阅 “Saving a query” 部分。2
配置查询 API 端点
可以直接在查询视图中点击 共享 按钮并选择API Endpoint 来配置查询 API 端点。
系统会提示你指定哪些 API 密钥可以访问该端点:选择 API 密钥后,系统会要求你:- 选择用于运行该查询的数据库角色 (
Full access、Read only或Create a custom role) - 指定允许跨源资源共享 (CORS) 的域名
curl 命令,便于你发送测试请求:为方便起见,界面中显示的 curl 命令如下:3
查询 API 参数
查询参数可使用{parameter_name: type} 语法来指定。系统会自动检测这些参数,示例请求载荷中将包含一个 queryVariables 对象,你可以通过它传递这些参数。4
测试与监控
创建查询 API 端点后,你可以使用curl 或任何其他 HTTP 客户端测试其是否正常工作:发送第一个请求后,共享 按钮右侧应会立即出现一个新按钮。点击它会打开一个弹出面板,其中包含该查询的监控数据:实现细节
HTTP 方法
何时使用 GET:
- 不涉及复杂嵌套数据的简单查询
- 参数便于进行 URL 编码
- 可利用 HTTP GET 语义带来的缓存优势
- 复杂的查询变量 (数组、对象、长字符串)
- 出于安全或隐私考虑,优先使用请求体时
- 流式文件上传或大体量数据
身份验证
请求配置
URL 参数
查询参数
请求头
请求体
参数
支持的格式
返回结果
成功
200 OK
查询已成功执行。
错误码
错误处理最佳实践
- 确保请求中包含有效的身份验证凭据
- 在发送前先验证
queryEndpointId和queryVariables - 妥善处理错误,并提供恰当的错误消息
升级端点版本
- 添加值为
1的x-clickhouse-endpoint-upgrade请求头 - 添加值为
2的x-clickhouse-endpoint-version请求头
- 支持所有 ClickHouse 格式
- 支持响应流式传输
- 提升的性能和功能
示例
基本请求
版本 1
- cURL
- JavaScript
版本 2
- GET (cURL)
- POST (cURL)
- JavaScript
响应
使用查询变量和 JSONCompactEachRow 格式版本 2 发起请求
- GET(cURL)
- POST(cURL)
- JavaScript
响应
在查询变量中使用数组并向表中插入数据的请求
- cURL
- JavaScript
将 ClickHouse 设置 max_threads 设为 8 的请求
- GET(cURL)
- POST(cURL)
- JavaScript
请求并将响应作为stream解析
- TypeScript
输出
将文件中的stream插入表中
./samples/my_first_table_2024-07-11.csv,内容如下: