ETL(九):同构关联(源限定符转换组件的使用)

一、解法一

1、同构关联和异构关联的区别

在这里插入图片描述
注:同构关联的表出自同一个地方,比如说两张表都来自Oracle数据库;异构关联的表出自不同地方,比如说一张表来自Oracle数据库,一张表来自于MySQL数据库。

2、需求

在这里插入图片描述

3、ETL开发流程

1)定义源表

① 将scott用户中的emp表和dept表都导入到info中;
在这里插入图片描述

2)定义目标表

① 由于源表有两个,我们随便拖拉一张表到右侧灰色区域,进行目标表的设置;
在这里插入图片描述
② 双击该表,进行目标表表名的设置;
在这里插入图片描述
③ 在原来字段的基础上,新增几个字段,得到最终目标表的字段;
在这里插入图片描述
④ 生成并执行sql,在目标数据库中生成该目标表;
在这里插入图片描述
⑤ 取edw用户下,查看该目标表ora_edw_same_join;
在这里插入图片描述

3)定义映射

① 创建一个映射;
在这里插入图片描述
② 将源表和目标表都拖拉到右侧的灰色区域;
在这里插入图片描述
③ 删除emp表和dept表各自的SQ表,效果如下;
在这里插入图片描述
④ 新建一个“源限定符转换SQ”组件,将上述两张表进行关联;
在这里插入图片描述
⑤ 完成上述操作后,就会产生如图所示的“源限定符转换SQ”组件;
在这里插入图片描述
⑥ 双击“源限定符转换SQ”组件,设置上面两张表的关联条件;
在这里插入图片描述
⑦ 将“源限定符转换SQ”组件中的字段,与目标表之间的字段进行连接;
在这里插入图片描述
⑧ 使用CTRL + S保存创建的映射;
在这里插入图片描述

4)定义任务

① 创建一个任务;
在这里插入图片描述
② 选择该任务要执行的映射;
在这里插入图片描述
③ 修改源表的连接对象;
在这里插入图片描述
④ 修改目标表的连接对象;
在这里插入图片描述
⑤ 使用CTRL + S保存一下该任务;
在这里插入图片描述

5)定义工作流

① 定义一个工作流;
在这里插入图片描述
② 建立工作流与任务之间的连接;
在这里插入图片描述
③ 使用CTRL + S,保存一下工作流;
在这里插入图片描述
④ 通过任务启动工作流;
在这里插入图片描述
⑤ 上述操作会自动打开M客户端,我们在M客户端查看一些日志信息。尤其是当我们出现错误的时候,日志信息可以帮助我们找到自己的错误究竟在哪里;
在这里插入图片描述
⑥ 最后可以去edw用户下,查看目标表中的数据,正是我们想要的效果;
在这里插入图片描述

二、解法二:直接在info中使用SQL

  在上述操作基础上,进行部分开发步骤的修改即可。为了和上面目标表的结果区分开,我们完成如下效果展示;
在这里插入图片描述

1、直接从原来创建好的映射那里,开始进行修改;

① 先来查看一下之前创建好的映射,是啥样;
在这里插入图片描述
② 删除原来的“源限定符转换SQ”组件;
在这里插入图片描述
③ 重新添加一个“源限定符转换SQ”组件;
在这里插入图片描述
完成上述操作后,就会出现如下界面;
在这里插入图片描述
④ 双击c,就会出现如下界面;
在这里插入图片描述
⑤ 在上述基础上,进行如下操作(这一步很关键);
在这里插入图片描述
注意!注意!注意!上述操作只是第一步,接着进行下面这一步;
在这里插入图片描述
⑥ 然后在将“源限定符转换SQ”组件中的字段,全部传递给目标表中的字段;
在这里插入图片描述
⑦ 使用CTRL + S保存修改好的映射;
在这里插入图片描述
⑧ 重新刷新一下映射;
在这里插入图片描述
⑨ 使用CTRL + S保存;
在这里插入图片描述
⑩ 重新启动任务;
在这里插入图片描述
注意:可以看到这里拒绝了一行,那是因为我们做右连接的时候,最后一条数据emptno为空,但是emptno在目标表中又是一个主键,因此不允许插入,因此目标表中仍然是14条记录。
⑪ 可以去edw用户下,检验一下目标表中的数据;
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/weixin_41261833/article/details/103663310