持续查询简介
本文档介绍了 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
多区域支持持续查询。
限制
持续查询存在以下限制:
- BigQuery 持续查询不会维护注入数据的状态。目前不支持依赖于状态的常见操作,例如
JOINs
、聚合函数和窗口化分析函数。 您不能在持续查询中使用以下 SQL 功能:
- 非确定性标量函数,例如
CURRENT_DATE
函数 JOIN
运算- 聚合函数
- 近似聚合函数
以下查询子句:
以下查询运算符:
查询集合运算符
BigQuery ML 函数(支持的操作中列出的函数除外)
数据操纵语言 (DML) 语句,但
INSERT
除外。不针对 Bigtable 或 Pub/Sub 的
EXPORT DATA
语句
- 非确定性标量函数,例如
持续查询不支持将通配符表作为数据源。
持续查询不支持将外部表作为数据源。
持续查询不支持以下 BigQuery 安全功能:
- 列级和行级安全性
- 客户管理的加密密钥 (CMEK)
将数据导出到 Bigtable 时,您只能定位与包含您正在查询的表的 BigQuery 数据集位于同一 Google Cloud 区域边界内的 Bigtable 实例。如需了解详情,请参阅位置注意事项。 由于 Pub/Sub 是全球性资源,因此该限制不适用于将数据导出到 Pub/Sub 的情况。
在持续查询作业运行时,您无法修改持续查询中使用的 SQL。如需了解详情,请参阅修改持续查询的 SQL。
如果持续查询作业滞后超过七天,您必须取消并启动新的持续查询作业。您可以再次运行查询并使用
APPENDS
更改历史记录功能从停止上一个持续查询作业的时间点恢复处理。如需了解详情,请参阅从特定时间点开始持续查询。
预留限制
- 您必须创建企业版或企业 Plus 版预留才能运行持续查询。持续查询不支持按需计算结算模式。
- 为持续查询创建预留分配时,关联的预留不得超过 500 个槽,并且无法配置为使用自动扩缩。
- 持续查询预留分配不会共享空闲槽,即使预留配置为共享槽也是如此。
- 您不能在同一预留中创建使用与持续查询预留分配不同的作业类型的预留分配。
- 您无法配置持续查询并发。BigQuery 会根据使用
CONTINUOUS
作业类型的可用预留分配,自动确定可以并发运行的持续查询的数量。 - 使用同一预留运行多个持续查询时,单个作业可能无法公平地拆分可用资源(由 BigQuery 公平性定义)。
价格
持续查询使用 BigQuery 容量计算价格,该价格以槽为单位。如需运行持续查询,您必须拥有使用企业版或企业 Plus 版的预留以及使用 CONTINUOUS
作业类型的预留分配。
其他 BigQuery 资源的使用(例如数据注入和存储)将按照 BigQuery 价格中显示的费率收费。
接收持续查询结果或在持续查询处理期间被调用的其他服务的使用,将按照针对这些服务发布的费率收费。如需了解持续查询使用的其他 Google Cloud 服务的价格,请参阅以下主题:
后续步骤
尝试创建持续查询。