通过 Datastream 中的回填功能,您可以将源对象中的历史数据快照加载到目标中,同时持续变更数据捕获。如果您在配置来源时未选择回填历史数据,则可以手动启动完整或部分回填。如果数据被意外删除,启动回填还可以让您重新同步目标对象。
在数据流运行期间,您可以监控对象状态,并随时停止正在进行的回填。停止操作可防止损坏的架构或数据复制,并让您一次运行一个并行任务,以减少源负载。
对象状态
在启动和停止对象回填的生命周期中,各种状态包括:
无状态(在界面中表示为
-):对象获得此状态的原因包括:- 直播尚未开始。
- 未选中回填历史数据复选框(因此回填被定义为手动)。
- 系统明确地将对象从自动回填中排除。
- 数据流被配置为包含将来的表。如果发生这种情况,那么当向来源添加新表时,系统不会为这些表创建自动回填任务(因为新表通常没有任何历史数据可供回填)。
Pending:尚未开始回填对象。Active:正在为对象进行回填。Completed:对象的回填已完成。Stopped:对象的回填已停止。如果再次为该对象启动回填,Datastream 会将与该对象关联的所有现有数据从来源流式传输到目标位置。Failed:对象的回填失败,必须再次启动回填。
启动回填
前往 Google Cloud 控制台中的数据流页面。
点击包含要启动回填的对象的流。
点击对象标签页。
选中要启动回填的每个对象对应的复选框。
点击启动回填。
如果您只选择了一个对象,请在对话框中点击启动对象回填。否则,如果您选择了多个对象,请点击启动对象回填。
Datastream 将开始回填您选择的对象,每个对象的状态将从
Pending更改为Active,再更改为Completed。当对象的状态为Completed时,这意味着 Datastream 已读取该对象的所有数据,但数据可能仍在加载到目标位置。
启动部分回填
除了完整回填之外,您还可以执行部分回填,将源中的特定数据子集加载到目标中。为此,您需要提供 SQL WHERE 子句作为自定义过滤条件。
Datastream 支持对以下来源进行部分回填:
- SQL Server
- Spanner
- Oracle
- PostgreSQL
- MySQL
如需启动部分回填,请执行以下操作:
前往 Google Cloud 控制台中的数据流页面。
点击包含要启动回填的对象的流。
点击对象标签页。
选择要为其启动回填的对象。
点击启动回填。
在随即显示的面板中,选中启用自定义过滤条件复选框。
输入 SQL
WHERE子句。例如product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'。点击启动回填。
Datastream 会验证过滤器。如果验证失败,编辑器上方会显示一条错误消息。如果验证成功,Datastream 会启动回填作业。
支持的自定义过滤条件语法
当您提供自定义过滤条件时,Datastream 支持 SQL WHERE 子句语法的基本子集。支持的元素包括:
- 逻辑运算符:
AND、OR - 比较运算符:
=、<、>、<=、>=、!= - 条件:
IN、NOT IN、IS NULL、IS NOT NULL - 分组:圆括号
(),用于定义条件组 值:
- 字符串:用英文单引号括起来的文本,例如
'value' - 数字:整数 (
123)、小数 (123.45)、负数 (-10) 和带指数的数字 (1.2e3)。 - 布尔值:
TRUE或FALSE区分大小写的关键字。
- 字符串:用英文单引号括起来的文本,例如
标识符:
- 限定:列名称可以使用点来指定架构或表,例如
myColumn、myTable.myColumn或mySchema.myTable.myColumn。 - 不带引号的标识符:可以包含字母、数字和下划线,并且必须以字母或下划线开头。列或表名称是否区分大小写取决于目标数据库。
- 用英文双引号括起来的标识符:必须用英文双引号 (
") 括起来。
- 限定:列名称可以使用点来指定架构或表,例如
部分补缺限制
某些语句、运算符和关键字被明确禁止,使用它们会导致错误。其中包括:
- 注释,例如
--或/* */。 - 函数,例如
UPPER(column)和NOW()。 - 算术表达式,例如
column + 1 > 10。 LIKE运算符。LIKE不支持通配符(例如%或_)。BETWEEN运算符。改用>=和<=。- 子查询,例如
WHERE子句中的(SELECT ...)。 CASE语句,例如CASE WHEN ... END。- 列比较,例如
column1 = column2。必须与字面量进行比较。 DATE和TIME特定类型或函数。- 数组或 JSON 专用运算符。
- 显式类型转换:例如
CAST(column AS INT)。
停止回填
前往 Google Cloud 控制台中的数据流页面。
点击包含要为其停止回填的对象的数据流。
点击对象标签页。
选中要停止回填的每个对象对应的复选框。
点击停止回填。
如果您只选择了一个对象,请在对话框中点击停止对象回填。否则,如果您选择了多个对象,请点击停止对象回填。
Datastream 将停止回填您选择的对象,并且每个对象的状态都会更改为
Stopped。当对象处于此状态时,则表示该对象已停止回填。如果再次为对象启动回填,则 Datastream 会将与对象关联的所有现有数据从来源流式传输到目标位置。
后续步骤
- 如需详细了解流,请参阅流生命周期。
- 如需了解如何查看数据流的相关信息,请参阅查看数据流。
- 如需了解如何修改数据流,请参阅修改数据流。
- 如需了解如何监控数据流,请参阅监控数据流。
- 如需了解如何恢复失败的数据流,请参阅恢复数据流。