You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Google Cloud Datastream同步源表删除操作至目标表?

阻止Datastream同步源表DELETE操作到目标表的可行方案

针对带主键的表无法通过is_deleted__字段过滤的问题,以下是Datastream层面的优先解决方案,以及备选兼容方案:

Datastream原生解决方案

1. 过滤CDC事件类型,丢弃DELETE操作

Datastream同步带主键表的CDC数据时,会在变更记录中携带事件类型标识(比如__datastream_operation__,不同数据源字段名可能略有差异,比如MySQL源对应cdc_operation)。你可以通过行过滤规则直接排除DELETE事件:

  • 打开Datastream控制台,找到目标流并进入编辑模式
  • 在表映射的对应表配置中,添加行过滤条件:
    __datastream_operation__ != 'DELETE'
    
  • 保存配置后重启流,后续源表的DELETE操作将不会被同步到目标

2. 修改目标表写入模式为追加(Append-only)

默认情况下,带主键的表会使用**合并(Merge)**写入模式,Datastream会自动应用DELETE/UPDATE操作。切换为追加模式后,所有变更只会以新行形式插入,不会执行删除:

  • 在流的目标配置中,找到对应表的映射设置
  • 将写入模式从「合并」改为「追加」
  • 注意:此模式下源表的UPDATE会生成重复行,若需要保留最新版本,后续可通过BigQuery的窗口函数或视图去重

3. 用转换规则过滤DELETE事件

通过Datastream的转换功能,直接丢弃DELETE类型的变更行:

  • 在流的转换配置页面,添加一个「过滤转换」
  • 设置规则:当事件类型字段(如operation)的值为DELETE时,跳过该行
  • 应用转换并重启流,即可阻止DELETE操作同步

备选方案(Datastream层面受限时)

如果上述方案无法满足需求,可在BigQuery侧做补充处理:

  • 创建一个基于目标表的视图,过滤掉所有被业务逻辑标记为删除的记录(如果源表有此类字段)
  • 给目标表按时间分区,配置数据保留策略,降低误删数据的影响,但此方法无法实时阻止同步

内容的提问来源于stack exchange,提问作者Rahul Ranjit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:06:39