管理数据流对象的回填

通过 Datastream 中的回填功能,您可以将源对象中的历史数据快照加载到目标中,同时持续变更数据捕获。如果您在配置来源时未选择回填历史数据,则可以手动启动完整或部分回填。如果数据被意外删除,启动回填还可以让您重新同步目标对象。

在数据流运行期间,您可以监控对象状态,并随时停止正在进行的回填。停止操作可防止损坏的架构或数据复制,并让您一次运行一个并行任务,以减少源负载。

对象状态

在启动和停止对象回填的生命周期中,各种状态包括:

  • 无状态(在界面中表示为 -):对象获得此状态的原因包括:

    • 直播尚未开始。
    • 未选中回填历史数据复选框(因此回填被定义为手动)。
    • 系统明确地将对象从自动回填中排除。
    • 数据流被配置为包含将来的表。如果发生这种情况,那么当向来源添加新表时,系统不会为这些表创建自动回填任务(因为新表通常没有任何历史数据可供回填)。
  • Pending:尚未开始回填对象。

  • Active:正在为对象进行回填。

  • Completed:对象的回填已完成。

  • Stopped:对象的回填已停止。如果再次为该对象启动回填,Datastream 会将与该对象关联的所有现有数据从来源流式传输到目标位置。

  • Failed:对象的回填失败,必须再次启动回填。

启动回填

  1. 前往 Google Cloud 控制台中的数据流页面。

    转到“数据流”页面

  2. 点击包含要启动回填的对象的流。

  3. 点击对象标签页。

  4. 选中要启动回填的每个对象对应的复选框。

  5. 点击启动回填。

  6. 如果您只选择了一个对象,请在对话框中点击启动对象回填。否则,如果您选择了多个对象,请点击启动对象回填。

    Datastream 将开始回填您选择的对象,每个对象的状态将从 Pending 更改为 Active,再更改为 Completed。当对象的状态为 Completed 时,这意味着 Datastream 已读取该对象的所有数据,但数据可能仍在加载到目标位置。

启动部分回填

除了完整回填之外,您还可以执行部分回填,将源中的特定数据子集加载到目标中。为此,您需要提供 SQL WHERE 子句作为自定义过滤条件。

Datastream 支持对以下来源进行部分回填:

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL
  • MySQL

如需启动部分回填,请执行以下操作:

  1. 前往 Google Cloud 控制台中的数据流页面。

    转到“数据流”页面

  2. 点击包含要启动回填的对象的流。

  3. 点击对象标签页。

  4. 选择要为其启动回填的对象。

  5. 点击启动回填。

  6. 在随即显示的面板中,选中启用自定义过滤条件复选框。

  7. 输入 SQL WHERE 子句。例如 product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'。

  8. 点击启动回填。

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)。

停止回填

  1. 前往 Google Cloud 控制台中的数据流页面。

    转到“数据流”页面

  2. 点击包含要为其停止回填的对象的数据流。

  3. 点击对象标签页。

  4. 选中要停止回填的每个对象对应的复选框。

  5. 点击停止回填。

  6. 如果您只选择了一个对象,请在对话框中点击停止对象回填。否则,如果您选择了多个对象,请点击停止对象回填。

    Datastream 将停止回填您选择的对象,并且每个对象的状态都会更改为Stopped。

    当对象处于此状态时,则表示该对象已停止回填。如果再次为对象启动回填,则 Datastream 会将与对象关联的所有现有数据从来源流式传输到目标位置。

后续步骤