持续查询简介
本文档介绍了 BigQuery 持续查询。
BigQuery 持续查询是指连续运行的 SQL 语句。借助持续查询,您可以实时分析 BigQuery 中的传入数据。您可以将持续查询生成的输出行插入 BigQuery 表中,也可以将其导出到 Pub/Sub 或 Bigtable。持续查询可以使用以下方法之一处理已写入标准 BigQuery 表的数据:
您可以使用持续查询执行对时间敏感的任务,例如创建数据洞见并立即采取行动、应用实时机器学习 (ML) 推理,以及将数据复制到其他平台。这样,您就可以将 BigQuery 用作应用决策逻辑的事件驱动型数据处理引擎。
下图显示了常见的持续查询工作流:
使用场景
您可能需要使用持续查询的常见用例如下:
- 个性化客户互动服务:使用生成式 AI 为每次客户互动量身定制合适的消息。
- 异常检测:构建解决方案,让您能够对复杂数据进行实时异常和威胁检测,从而更快地对问题做出响应。
- 可自定义的事件驱动型流水线:使用与 Pub/Sub 的持续查询集成,根据传入数据触发下游应用。
- 数据丰富化和实体提取:使用持续查询,通过 SQL 函数和机器学习模型执行实时数据丰富化和转换。
- 反向提取、转换和加载(反向 ETL):对更适合低延迟应用服务的其他存储系统执行实时反向 ETL。例如,分析或增强写入 BigQuery 的事件数据,然后将其流式传输到 Bigtable 以供应用分发。
支持的操作
持续查询支持以下操作:
- 运行
INSERT
语句以将持续查询中的数据写入 BigQuery 表中。 运行
EXPORT DATA
语句以将持续查询输出发布到 Pub/Sub 主题。如需了解详情,请参阅将数据导出到 Pub/Sub。您可以将 Pub/Sub 主题中的数据与其他服务搭配使用,例如使用 Dataflow 执行流式分析,或在应用集成工作流中使用这些数据。
运行
EXPORT DATA
语句,将数据从 BigQuery 导出到 Bigtable 表。如需了解详情,请参阅将数据导出到 Bigtable。调用以下生成式 AI 函数:
若要使用这些函数,您需要基于 Vertex AI 模型创建 BigQuery ML 远程模型。
调用以下 AI 函数:
若要使用这些函数,您需要基于 Cloud AI API 创建 BigQuery ML 远程模型。
使用
ML.NORMALIZER
函数对数值数据进行归一化。使用无状态 GoogleSQL 函数,例如转换函数。在无状态函数中,系统会独立处理表中的每一行。
使用
APPENDS
更改历史记录函数以从特定时间点开始持续查询处理。
授权
如需执行长时间运行的持续查询,请使用服务账号,而不是用户账号。
运行持续查询作业时使用的 Google Cloud 访问令牌由用户账号生成后,存留时间 (TTL) 为两天。因此,此类作业会在两天后停止运行。服务账号生成的访问令牌不受 TTL 限制,因此服务账号执行的持续查询作业会一直运行,直到明确取消为止。如需了解详情,请参阅使用服务账号运行持续查询。
位置
以下位置支持持续查询:
US
EU
asia-northeast1
asia-south1
europe-west1
europe-west2
europe-west4
us-central1
us-east1
us-east4
us-west1
限制
持续查询存在以下限制:
- BigQuery 持续查询不会维护提取数据的状态。目前不支持依赖于状态的常见操作,例如
JOINs
、汇总函数和基于窗口的分析函数。 您不能在持续查询中使用以下 SQL 功能:
- 非确定性标量函数,例如
CURRENT_DATE
函数 JOIN
运算- 聚合函数
- 近似聚合函数
以下查询子句:
以下查询运算符:
查询集合运算符
支持的操作中未列出的 BigQuery ML 函数
数据操纵语言 (DML) 语句,
INSERT
除外。未以 Bigtable 或 Pub/Sub 为目标的
EXPORT DATA
语句
- 非确定性标量函数,例如
连续查询不支持将通配符表用作数据源。
连续查询不支持将外部表用作数据源。
持续查询不支持将 INFORMATION_SCHEMA 视图用作数据源。
持续查询不支持适用于 Apache Iceberg 的 BigQuery 表。
持续查询不支持以下 BigQuery 安全功能:
将数据导出到 Bigtable 时,您只能定位与包含您正在查询的表的 BigQuery 数据集位于同一 Google Cloud 区域边界内的 Bigtable 实例。如需了解详情,请参阅位置注意事项。 此限制不适用于将数据导出到 Pub/Sub,因为 Pub/Sub 是全球性资源。
您无法从数据画布运行持续查询。
在持续查询作业运行时,您无法修改持续查询中使用的 SQL。如需了解详情,请参阅修改持续查询的 SQL。
如果持续查询作业滞后超过 7 天,您必须取消并启动新的持续查询作业。您可以再次运行查询并使用
APPENDS
更改历史记录功能从停止上一个持续查询作业的时间点恢复处理。如需了解详情,请参阅从特定时间点开始持续查询。
预留限制
- 您必须创建企业版或企业 Plus 版reservations,才能运行持续查询。持续查询不支持按需计算结算模式。
- 为持续查询创建预留分配时,关联的预留不得超过 500 个槽,并且无法配置为使用自动扩缩。
- 持续查询预留分配不会共享空闲槽,即使预留配置为共享空闲槽也是如此。
- 您无法在同一预留中创建与持续查询预留分配使用不同作业类型的预留分配。
- 您无法配置持续查询并发。BigQuery 会根据使用
CONTINUOUS
作业类型的可用预留分配,自动确定可以并发运行的持续查询的数量。 - 使用同一预留运行多个持续查询时,单个作业可能无法公平地拆分可用资源(由 BigQuery 公平性定义)。
价格
持续查询使用 BigQuery 容量计算价格,以槽为单位。如需运行持续查询,您必须拥有使用企业版或企业 Plus 版的预留以及使用 CONTINUOUS
作业类型的预留分配。
其他 BigQuery 资源(例如数据注入和存储)的使用费用将按 BigQuery 价格中显示的费率收取。
接收持续查询结果或在持续查询处理期间被调用的其他服务的使用,将按照针对这些服务发布的费率收费。如需了解持续查询使用的其他 Google Cloud 服务的价格,请参阅以下主题:
后续步骤
尝试创建持续查询。