1. 应用场景
数据库中存在两张表,其中数据「来源表」每天会更新、删除、新增。希望数据来源表数据变化后,「目标表」也随之更新,与数据来源表的数据保持一致。
例如:数据来源表「出入库信息」,昨天新增两条数,序号分别为 9 和 10,删除序号为 6 的数据,序号为 7 的数据「出库数量」变为 102 。
希望这些数据变化能更新到「目标表」中,如下图所示:
2. 方案一:4.0.18 之前版本
2.1 实现思路
通过数据同步节点,将来源表「出入库信息」中新增和更改的数据更新到目标表中。
通过「比对删除」算子,将来源表中删除的数据从目标表中剔除。
2.2 数据准备
1)目标表
FDLDemo 数据库中,有「目标表」。表信息如下图所示:
2)数据来源表
FRDemo 数据库中,有数据来源表「出入库信息」,昨天新增两条数据,删除序号为 6 的数据,序号为 7 的数据「出库数量」变为 102 。表信息如下图所示:
现在希望,目标表数据定时更新,与数据来源表保持一致。
2.3 将「出入库信息」中新增和更新数据更新至目标表
1)新建一个 ETL 任务,将一个「数据同步」节点拖到设计界面,并对该节点进行设置。如下图所示:
2)通过对比目标表和数据来源表中的「序号」字段,将数据来源表中新增和更新的数据更新到目标表中。
如果存在来源表「出入库信息」中有但是「目标表」中没有的「序号」,则将这些数据更新至「目标表」,同时当遇到来源表和目标表的序号相同时,会将来源表「出入库信息」中的数据覆盖更新到目标表。
如下图所示:
2.4 将来源表中删除的数据从目标表中删除
本节步骤目的:通过「数据转换」节点中的「比对删除」算子,将来源表中删除的数据从目标表中剔除。
1)将一个「数据转换」节点拖到设计界面,并与「数据同步」节点相连。如下图所示:
2)点击「数据转换」节点进入设置页面,添加「DB表输入」算子。
查询出来源表「出入库信息」中的数据,如下图所示:
3)再添加一个「比对删除」算子,与「DB表输入」算子相连。
对于「对比删除」算子,通过设置对比字段为「序号」,进行数据对比,若「目标表」中存在来源表「出入库信息」中没有的序号,则会将「目标表」中的该条数据删除,然后点击右上角「确定」按钮,如下图所示:
2.5 设置定时更新
1)点击「调度配置」,设置任务定时执行时间。让该任务每天在指定时间运行一次,如下图所示:
注:用户根据实际情况设置执行时间。
2)点击右上角「保存」按钮。
2.6 效果查看
任务执行后,目标表数据如下图所示: