Datastream 中的数据流可以回填历史数据,并将正在进行的更改流式传输到目标位置。在创建数据流的过程中,您 配置了有关数据流的 源数据库的信息。
如果您选中回填历史数据 复选框,则 Datastream 会将所有现有数据以及对数据的更改从来源流式传输到目标位置。
如果您未选中此复选框,则 Datastream 只会流式传输对数据的更改。如需让 DataStream 将所有现有数据的快照从来源流式传输到目标位置,您必须为包含此数据的对象启动回填。这些对象的格式包括数据库架构、表和列。
为对象启动回填的另一个原因是来源与目标位置之间的数据不同步。例如,用户可以意外删除目标位置中的数据,而这些数据现在丢失。在这种情况下,为对象启动回填可用作“重置机制”,因为所有数据都一次性流式传输到目标位置。因此,数据会在来源和目标位置之间同步。
启动对象的回填后,您可以停止该对象的回填。在前面的示例中,用户修改了数据库架构,导致架构或数据损坏。您不希望将此架构或数据流式传输到目标位置,因此需停止对象的回填。
您还可以停止对象的回填来实现负载均衡。 Datastream 可以并行运行多个回填。这可能会给来源带来额外的负担。如果负载显著,请停止对象的回填,然后逐个启动对象的回填。
对象状态
启动和停止对象回填的生命周期中的各种状态包括:
无状态(在界面中表示为
-):接收此状态的对象的原因包括:- 数据流尚未启动。
- 未选中回填历史数据 复选框(因此回填被定义为手动)。
- 系统明确地将对象从自动回填中排除。
- 数据流被配置为包含将来的表。如果出现这种情况,则在将新表添加到来源时,系统不会为它们创建自动回填任务(因为新表通常没有任何要回填的历史数据)。
Pending:对象尚未启动回填。Active:对象正在进行回填。Completed:对象已完成回填。Stopped:对象已停止回填。如果再次为对象启动回填,则 Datastream 会将与该对象关联的所有现有数据从来源流式传输到目标位置。Failed:对象回填失败,必须再次启动回填。
启动回填
前往数据流 页面,在 Google Cloud 控制台中。
点击包含要为其启动回填的对象的数据流。
点击对象 标签页。
选中要为其启动回填的每个对象对应的复选框。
点击启动回填 。
如果您只选择了一个对象,请在对话框中点击启动对象回填 。否则,如果您选择了多个对象,请点击启动对象回填 。
Datastream 将为您选择的对象启动回填,并且每个对象的状态将从
Pending更改为Active,再更改为Completed。当对象的状态为Completed时,表示 Datastream 已读取该对象的所有数据,但数据可能仍在加载到目标位置。
启动部分回填
除了完整回填之外,您还可以执行部分回填,以将来源中的特定数据子集加载到目标位置。为此,您需要提供 SQL WHERE 子句作为自定义过滤条件。
Datastream 支持对以下来源进行部分回填:
- SQL Server
- Spanner
- Oracle
- PostgreSQL
如需启动部分回填,请按以下步骤操作:
前往数据流 页面,在 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 会将与该对象关联的所有现有数据从来源流式传输到目标位置。