ETL(十一):增量抽取(更新策略转换组件的使用)

1、需要使用的数据源都在如下oracle_oltp_date.sql文件中,下面演示如何导入数据;

在这里插入图片描述

2、本文章使用的表是客户基本信息表ods_cust_info表,总共有3000条数据,截取部分数据展示如下;

在这里插入图片描述

3、ETL开发流程如下

1)定义源表

在这里插入图片描述

2)定义目标表

① 利用源表定义目标表;
在这里插入图片描述
② 修改目标表的表名;
在这里插入图片描述
③ 修改目标表的列字段;
在这里插入图片描述
④ 关键:生成并执行sql,才会在目标数据库中真正生成这张目标表;
在这里插入图片描述
⑤ 去目标数据库edw中查看生成的目标表;
在这里插入图片描述

3)定义映射

① 创建一个映射;
在这里插入图片描述
② 将源表和目标表都拖拉到右侧灰色区域;
在这里插入图片描述
③ 插入一个“查找转换”组件;
在这里插入图片描述
对上述图的一个说明:
在这里插入图片描述
④ 完成上述操作后,就会出现如下界面;
在这里插入图片描述
⑤ 将源表中的cust_id字段,移动到“查找转换”组件中;
在这里插入图片描述
⑥ 双击“查找转换”组件,进行查找条件的设置;
在这里插入图片描述
对第⑤步和第⑥步操作进行一个详细说明:
在这里插入图片描述
⑦ 在“查找转换”组件中,我们查找的是“目标表”,因此还要设置目标表的来源;
在这里插入图片描述
⑧ 添加“更新策略转换”组件,做增量抽取;
在这里插入图片描述
⑨ 将源表中的字段(目标表需要什么字段就移动什么字段)都移动到“更新策略转换”组件中,同时将“查找转换”组件中目标表中的cust_id字段移动到“更新策略转换”组件中;
在这里插入图片描述
双击“更新策略转换”组件,设置【更新策略表达式】;
在这里插入图片描述
利用上面两张图说明“更新策略转换”组件的作用:
在这里插入图片描述
⑩ 在“更新策略转换”组件和目标表之间,添加一个“表达式转换”组件,因为目标表中有ETL_DATE字段,“更新策略转换”组件中没有该字段;
在这里插入图片描述
⑪ 双击“表达式转换”组件,新增一个ETL_DATE字段;
在这里插入图片描述
⑫ 将“表达式转换”组件中的字段,传递给目标表;
在这里插入图片描述
⑬ 使用CTRL + S保存一下创建的映射;
在这里插入图片描述

4)创建任务

① 在创建任务之前,定义一个连接关系,为源表和目标表指明来源和去向。有了连接关系,你就知道源表来自于哪个数据库,目标表最终去往哪个数据库;
在这里插入图片描述
② 当出现如下界面后,完成1,2,3的操作;
在这里插入图片描述
③ 当出现如下界面后,继续完成1,2,3,4,5的操作;
在这里插入图片描述
④ 创建一个任务;
在这里插入图片描述
⑤ 选择该任务要执行的映射;
在这里插入图片描述
⑥ 修改源表的连接对象;
在这里插入图片描述
⑦ 修改目标表的连接对象;
在这里插入图片描述
⑧ 使用CTRL + S保存一下创建的任务;
在这里插入图片描述

5)创建工作流

① 创建一个工作流;
在这里插入图片描述
② 将任务拖动到右侧空白区域;
在这里插入图片描述
③ 建立工作流与任务之间的连接;
在这里插入图片描述
④ 使用CTRL + S保存一下创建的工作流;
在这里插入图片描述
⑤ 通过任务启动工作流;
在这里插入图片描述
⑥ 上述操作会自动打开M客户端,我们在M客户端查看一些日志信息。从下面的结果总可以看出:第一次插入的时候,目标表中是没有任何数据,因此会将源表中所有的3000条数据,都插入到目标表中;
在这里插入图片描述
⑦ 此时,去edw用户下,查看最终生成的数据;
在这里插入图片描述

4、验证“增量抽取”

① 在源表中新增2条数据;

insert into ODS_CUST_INFO (ID, CUST_ID, PHONE_NO, NAME)
values (6666,6666,66666666666,'诸葛亮');
insert into ODS_CUST_INFO (ID, CUST_ID, PHONE_NO, NAME)
values (8888,8888,88888888888,'刘备');

效果如下:
在这里插入图片描述
② 在M客户端中,重新启动任务;
在这里插入图片描述
③ 观察下面结果,可以看到第二次就只插入了最新的2条记录;
在这里插入图片描述
④ 此时,去edw用户下,查看最终生成的数据,共有3002条记录;
在这里插入图片描述

发布了50 篇原创文章 · 获赞 64 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41261833/article/details/103677758
今日推荐