将 BigQuery 查询转换为安全查询 REST API — 没有作业 API,也没有服务帐户密钥可以分发。
保存针对 BigQuery 数据集的 SQL 查询,生成每个接收者的 API 密钥,并将实时 JSON 端点提供给合作伙伴。 BigQuery 作业 API 无需轮询,无需共享服务帐户 JSON,也无需授予 GCP IAM 角色——只需一个受管控的只读帐户即可。 BigQuery REST API 几分钟之内。
Query Streams 是一个安全的实时数据库集成平台,可将任何已保存的 BigQuery 查询转换为合作伙伴可用的 REST API 端点——具有每个接收者的密钥、只读强制执行和完整的审计跟踪。 你获得一个现场直播 BigQuery REST API 无需连接 BigQuery 作业 API、共享服务帐户密钥或授予 GCP IAM 权限。 了解更多信息,请访问 QueryStreams.com 和 免费注册 几分钟内即可发布您的第一个 BigQuery 端点。
为什么要将 BigQuery 数据集作为 REST API 公开?
您的分析数据仓库位于 BigQuery 中,最终团队外部人员可能需要访问其中的一部分——客户希望在仪表板中查看指标,供应商需要实时数据流而不是定时导出,合作伙伴的应用程序需要读取一个结构化的结果集。所有原生选项都需要付费。BigQuery 自带的 REST API 也能用,但这需要 OAuth2 服务帐户、提交作业和轮询结果、处理分页以及管理 GCP IAM。授予合作伙伴项目访问权限(或共享服务帐户 JSON 文件)可以让他们获得比单个报告更广泛的权限。 BigQuery REST API 专为共享而设计的版本更加简洁:合作伙伴会收到一个 URL 和一个令牌,而不是您的 Google Cloud 项目。查询流则将其转换为已保存的查询加上一个密钥。
没有 IAM 或服务帐户 JSON 可供共享
接收方不会获得 GCP 角色、项目邀请或服务帐户密钥文件。网络代理使用您自己的只读凭据运行查询;合作伙伴仅持有 API 密钥。
每个接收者的 API 密钥
每个受赠者都会得到自己的 qsapi_* 关键在于:撤销其中一个凭据,而不影响其他凭据,也不轮换任何 Google Cloud 凭据。
默认只读
只读验证器会在非 SELECT 语句到达 BigQuery 之前将其拒绝。不会发生意外情况。 更新, 合并,或 降低 通过 API 的路径。
您的 SQL 语句将保持私密。
接收者可以看到端点 URL、JSON 响应以及您公开的任何过滤器——永远不会看到您的 SQL、数据集、项目 ID 或表结构。
无需托管或修补
没有作业 API 客户端,没有云函数网关,也没有 OAuth 令牌刷新代码。该端点作为托管功能运行,因此无需维护任何部署管道。
永久性的、过期的或自毁的
将端点设为永久端点,设置其在某个日期过期,或者为其设定一个固定的调用预算,使其在达到设定的请求次数后自动销毁。
通过 REST 传输 BigQuery 数据——常用方法及其弊端
在 BigQuery 上实现 HTTP 接口确实有多种方法,而且它们各自的功能都很出色。但问题在于,每种方法都需要您自行负责身份验证、基础设施或数据副本。以下是常见方法与 Query Streams 共享端点的比较,前提是目标仅仅是“允许特定合作伙伴读取特定结果集”。
| 忧虑 | BigQuery 作业 REST API(原生) | 云功能/DIY网关 | 查询流 |
|---|---|---|---|
| 收件人持有 | OAuth 客户端或服务帐户密钥 | 函数中的 URL | 一个用于单个查询的单用途键 |
| 暴露的表面 | 任何需要这些凭据才能运行的 SQL 语句 | 无论你手动编写什么代码 | 仅保存了一个查询,别无其他。 |
| 您设置的身份验证 | OAuth2 + IAM 角色 + 作业轮询 | 功能认证 + 服务帐户 | 仅限外呼客服,只读角色 |
| 每个接收者的密钥 + 撤销 | 自己动手做 | 自己动手做 | 内置 |
| 每次通话的审计日志 | 通过云日志记录,自组装 | 自行添加 | 内置 |
| 您操作/修补/轮换身份验证 | 是的,永远 | 是的,永远 | 为您管理 |
| 到达第一个终点的时间 | 数小时至数天 | 天 | 分钟 |
正在寻找 BigQuery API 的替代方案,用于合作伙伴共享?
如果您需要同时掌控前端和后端,并希望以编程方式完全访问您的项目,那么 BigQuery 的 REST API 是理想之选。但如果您希望向指定的合作伙伴提供一个受控的只读结果集(带有独立密钥、审计跟踪,且无需授予 IAM 权限),那么 Query Streams 正好可以满足您的需求。两者可以共存:作业 API 用于您自己的管道,Query Streams 用于对外共享。
查询流如何将 BigQuery 查询转换为 REST API
网络代理安装完毕且 BigQuery 连接器配置完成后,将已保存的查询提升到共享 REST 端点大约需要三个步骤。如果您已在使用 Excel、Google Sheets 或 MCP 服务器的查询流,则代理和连接器已就位,您可以从第二步开始。
通过代理连接 BigQuery
安装网络代理并添加一个具有只读角色的 BigQuery 连接器(例如: BigQuery 数据查看器 加 工作用户代理程序会与查询流建立出站 TLS 连接——任何 Google Cloud 凭据都不会到达接收方。
保存 SQL 查询
写下 选择 在针对 BigQuery 连接的查询构建器中——GoogleSQL JOIN、CTE、窗口函数和参数都适用。命名并保存。任何可以 SELECT 的内容都可以成为端点。
推广它并分享一个密钥
打开“安装”选项卡,选择端点类型(永久、过期或呼叫预算)和输出格式,然后通过电子邮件邀请收件人。他们将获得一个魔法链接声明和他们自己的 qsapi_* 钥匙。
保持字节扫描的可预测性
由于每个端点只运行一个已保存的查询,因此您可以精确控制 BigQuery 每次调用扫描的数据量。只需选择合作伙伴需要的列,按分区或聚集列进行筛选,即可将扫描的字节成本保持在较低且可预测的水平。查询流的速率限制和字节配额进一步限制了端点的触发频率。
没有共享项目,也没有公开的服务帐户密钥
正是这种安全模型促使团队选择它,而不是 IAM 授权或服务帐户 JSON。您的 BigQuery 凭据仅存储在您网络上代理的加密凭据存储中;它们绝不会传输到我们的云端,也不会对接收者可见。此外,每个端点都提供针对每个接收者的控制选项,您可以在共享之前对其进行严格控制。
只读强制执行
在任何语句到达 BigQuery 之前,验证器会在您网络上的代理中运行。非 SELECT 语句会被拒绝。 只读违规.
IP + CORS 允许列表
将接收方的密钥绑定到特定的 IP 地址或 CIDR 范围,并限制哪些浏览器来源可以调用每个端点。任何 SQL 查询执行之前,都会拒绝列表外的调用。
速率限制 + 字节配额
两级速率限制(每个密钥和每个端点)加上可选的每月字节上限,可将嘈杂的接收者限制在安全的爆炸半径内,并使您的字节扫描账单可预测。
调用 BigQuery REST API
接收方调用此端点的方式与其他 REST API 类似:提供一个 bearer token 和一个 URL。您公开的任何已保存查询参数都可以在每次调用时进行设置——在查询字符串中。 得到 或者在 JSON 正文中 邮政代理会将这些值绑定为正确的查询参数,而不是字符串连接,因此接收者无法突破过滤器注入 SQL。
使用以下方式选择每次调用的输出格式: 接受 标题(或标题) ?format= 查询参数): JSON 对于单个数组, CSV 对于电子表格和 pandas,或者,在流式端点上, NDJSON (每行一个 JSON 数据)适用于按需解析的管道——非常适合 BigQuery 生成的大型结果集。对于带宽敏感型用户,请选择 LZ4 有效载荷压缩 Accept-Encoding: lz4未压缩的响应也采用标准格式。 gzip 自动传输到网络。有关静态模式与流模式、四种线路组合以及 OpenAPI 3.1 版本的完整详细说明,请参阅…… 适用于 SQL 数据库的即时 REST API 指导。
使用量如何计费
API 平台包含在所有套餐中,并与其他查询流一样占用相同的每月字节限额。(BigQuery 会像往常一样对查询进行字节扫描收费,因此,保存的查询范围要严格控制。) 字节配额是如何计量的 →
将其插入 Power BI、Tableau 以及任何可以读取 JSON 的工具。
因为每个端点都返回标准 JSON — 有了 CSV 和流式 NDJSON,任何可以读取 REST 源的工具都可以直接使用您的 BigQuery 数据,无需在他们那边安装任何东西,也不需要 Google Cloud SDK。 Power Query 是进入微软 BI 技术栈最便捷的桥梁: Power BI 选择 获取数据 → 来自网页粘贴端点 URL,添加您的 授权 标题,Power Query 将 JSON 解析为可刷新的表格,该表格用于填充您的数据模型。(对于电子表格中的实时数据,可以使用原生方法。) 查询流 Excel 插件 更简单的方法是使用 Power Query,它能满足您在 Power BI 模型本身中获取数据的需求。)
它还提供饲料 n8n, Qlik, 卷曲, Python (请求 或 pandas.read_json)、失眠症、跳房子游戏——或者任何可以发送 HTTP 请求和读取 JSON 的脚本或工作流程。
适用于所有 BigQuery 区域
无论您的 BigQuery 数据集位于哪个区域或跨区域,都无关紧要。无论您的数据位于美国、欧盟还是任何其他区域,代理的连接方式都相同。为了获得最低延迟,请将代理部署在靠近数据集的 Google Cloud 区域中;一个 Query Streams 帐户可以跨区域和云运行多个代理,并且无论哪个代理提供服务,单个端点的行为都完全相同。
比 BigQuery 更强大
相同的工作流程可以将任何已连接数据库(PostgreSQL、SQL Server、MySQL、Snowflake、Oracle、DuckDB 等)中保存的查询提升到 REST 端点。 API平台公开的每个数据库 →
常见问题
我需要授予 IAM 权限还是共享服务帐户密钥? +
收件人可以看到我的 SQL 或 Google Cloud 凭据吗? +
这与 BigQuery 自身的 REST API 有何不同? +
API可以返回哪些输出格式? +
这会增加我的 BigQuery 扫描字节数账单吗? +
端点可以过期或自毁吗? +
收件人是否需要 Query Streams 帐户? +
开始
免费发布您的第一个 BigQuery REST API。
注册、安装网络代理、将 BigQuery 连接到只读角色、保存 SQL 查询,然后通过电子邮件向收件人发送魔法链接声明。从第一次调用开始,每个收件人的密钥、只读强制执行和完整的审计跟踪功能都将启用。
相关指南: 适用于 SQL 数据库的即时 REST API | 数据库 REST API 平台 | 将 Snowflake 公开为 REST API | 连接器设置指南
类别:API平台
标签:bigquery-rest-api、bigquery、google-bigquery、rest-api、expose-bigquery-as-api、bigquery-api-integration、share-bigquery-data、per-recipient-keys、no-code-api、database-rest-api
元描述:将 BigQuery 查询转换为具有每个接收者密钥的安全、只读 REST API——无需作业 API、IAM 或服务帐户密钥。

