1. 概述编辑
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
3.3 | 「数据转换」节点新增算子「比对删除」,可将来源表中删除数据的操作同步到目标表 |
4.0.18 |
|
1.2 应用场景
某公司设计了一个定时更新数据库的功能,数据来自 A 数据库,需要取出 A 数据库中的数据,定时导入到 B 数据库中,保证 B 数据库信息与 A 数据库信息相同。
由于公司人员流动,企业邮箱数据库中的信息会不完善或存在老旧数据,需要定时更新、删除、或修改数据。
1.3 功能简介
同步数据时,来源表数据会新增、修改、删除,此时如果需要目标表数据也做这些操作,可以通过「数据比对」+「DB表输出」的组合方式,完成增量插入、删除、更新的操作。
注:更多数据定时更新方案详情参见:数据更新专题
2. 功能介绍编辑
通过「数据比对」+「DB表输出」的组合方式,可完成增量插入、删除、更新的操作。「数据比对」算子的设置界面如下图所示:
各设置项介绍如下表所示:
设置项 | 说明 | 备注 |
---|---|---|
比对源 |
|
|
逻辑主键 | 需要选择左右两表的关联字段 | - |
比对字段 | 基于选定的「逻辑主键」,再选择两表的比对字段,用于进行数据比对和「fdl_comparison_type」列标记 | 「比对字段」配置可以为空:
|
标识关系 | 默认新增标记列,列名为 fdl_comparison_type,值默认为四种:
| 支持用户自定义 4 种标记值,但是 FDL 程序需要能自动映射。 例如: 例如针对增量场景,支持用户将 Identical 改成 same ,Changed 改成 diff ,Added 改成 add,Removed 改成 delete,但是程序能够识别这种映射关系,并且在后续的DB 表输出能够自动填充 (即数据比对中,标识关系上输入的值与DB表输出中的标识值一致即可) |
在「数据预览」Tab 页中,fdl_comparison_type 放在第一列,并且列名用橙色表示。如下图所示:
3. 示例编辑
3.1 场景模拟
示例数据下载:fsale.xls、fsalecopy.xls
需要定期将 fsale 表中的数据同步到 fsalecopy 表中。
fsalecopy 表中的数据如下图所示:
现在 fsale 表中删除了「甘蔗」和「冻梨」的数据,增加了「葡萄」的数据,更新了「菠萝」的数据。希望将最新数据同步到 fsalecopy 表中去。
3.2 设置来源表和目标表
3.2.1 创建任务
创建一个 ETL 任务,将一个「数据转换」节点拖到设计界面。如下图所示:
3.2.2 设置来源表
1)点击「数据转换」节点,将一个「DB表输入」算子拖到数据转换的设计界面,在「节点信息」Tab 下为其重命名为「来源表」。如下图所示:
2)如下图设置数据来源,SQL 语句取出 fsale 表中所有数据。
3.2.3 设置目标表
与 3.2.2 节步骤类似。
再添加一个「DB表输入」算子,重命名为「目标表」。SQL 语句取出 fsalecopy 表中所有数据。如下图所示:
3.3 设置数据比对
1)添加一个「数据比对」算子,并使用线条跟它上游的两个「DB表输入」算子相连。如下图所示:
2)「数据比对」算子设置如下图所示:
注:「比对源」是自动生成的。
「数据预览」Tab 页如下图所示:
3.4 设置 DB 表输出
1)新增「DB表输出」算子,使用线条与「数据比对」算子相连。
2)设置「DB表输出」算子:最新数据存到目标表 fsalecopy 中,写入方式选择「插入/更新/删除数据」,写入方式选择「物理删除」,逻辑主键选择 ID ,标识字段与标识值如下图所示:
3)点击「字段映射」,删除目标表字段 fdl_comparison_type 。如下图所示:
4)点击右上角「保存」按钮。
3.5 运行任务
点击右上角「保存并运行」,日志出现执行成功信息表示任务成功运行。如下图所示:
可以看到 fsalecopy 表与 fsale 表数据保持一致。如下图所示: