Informatica联结组件、路由组件

1. 概念介绍
第一,联结组件的作用是联结多表,跟数据库的 Join 一样。第二,路由组件是按条件对数据分组,load 到多个 target。我们还是做一个 demo 来认识这两个组件。

2. demo 描述
先看下 source 数据,如下图所示:
1577696050-0516c5b04befa0e
我们的需求是把 User_Source 和 Orders 做一个内联结,将对应字段 load 到 OrderDetail 和 OrderDetail_Oct10_Before,其中 OrderTime > ‘2017-10-10’ 的记录进 OrderDetail,其他记录进 OrderDetail_Oct10_Before。

3. 开发步骤
首先是把两个 source 都拖到工作区,然后拖一个 JT 进来,将 source 里我们需要的字段以及联结的字段连到 JT 进来,如下图所示:
1577696058-c7a1062a3abe9d7
双击 JT,设置联结条件如下:
1577696064-7b18d62abdac149
再拖一个 RT 进来,并将 JT 的字段拖到 RT 进来,并设置 RT 的分组条件,如下图所示:
1577696068-14ea4dde3fcb86c
1577696072-d97e63bac8192f6
可以看到 RT 的视图已经变成两组数据了,其实还有一组默认的,如果两组条件都不满足,则分到默认分组,如下图所示:
1577696082-751a340d41c6c0b
接下来就把需要的数据连到指定的 target 就好了,如下图所示:
1577696090-5d8ee88fdecdf21
其实我这里连错了,因为我们把联结字段的 UserMobile 和 Mobile 都连到 RT 中了,导致疏忽了字段的对应关系,其实只需要连一个进来就可以了。修改后如下所示:
1577696095-272d8d705172e8b
设置一下 workflow ,我们就直接用插入就可以,如下图所示:

1577696099-c8c0ec34387a5fa
4. 验证结果
运行一下,看下结果,正如我们希望的那样,数据都进来了,我把 source 和 target 都贴出来,如下图所示:

1577696106-181a18f5065f40a

1577696112-940d0d86bc9354e
5. 联结多表的另一种用法
其实,Infa 有一种更好的联结方式,我称它为 SQ 方式,就是将多个表连到同一个 SQ 上,通过直接写 sql 脚本的方式来完成。它比用上面的联结组件性能要高,尤其数据量比较大的时候,优势就很明显了。SQ 是拿着你写好的 sql 去 Server 上跑完后直接取到结果,而 JT 需要先把多个表记录缓存起来,再联结,得到结果。

下面简单介绍下 SQ 用法,首先 copy 一个 mapping,选中我们刚才做的 mapping,”ctrl+c/v” 就可以了。我们删除多余的部分,如下图所示:

1577696120-c8556d6ee15e78c

然后把 source 拖进来,保留一个 SQ,把两个 source 字段拖到 SQ,将我们需要的字段连到 RT,如下图所示:

1577696128-077eae85096ad6a

双击 SQ,点击 “Generate SQL” 自动生成 sql,就完成了。要注意的是要先把字段连过去,再生成 sql。生成的 sql,我们可以修改,添加 where 条件以及连接其他的表,只要保证 “SELECT” 到 “FROM” 部分的内容不变就可以了。

1577696137-fac4aec5595c237

目前为止,Mapping 的基础组件就介绍完了,其他的组件不再详细介绍。后面会介绍其他的内容,比如使用参数、环境迁移、知识库迁移,再抽出一篇专门介绍其他零碎知识点汇总。Infa 的内容远不至此,更多内容不在此基础系列范围内,比如 Infa 监控报警机制等。另外,Infa 比较权威的社区 是 KB,上面可以搜索关于 Infa 的问题以及解决方案。

打赏

觉得本站还不错就打赏一下吧!

支付宝扫一扫打赏

微信扫一扫打赏

本站所有内容均来自于互联网自动采集,如无意侵犯了您的权利,请您发送邮件到admin@chinaetl.com.cn联系管理员删除。
ChinaETL » Informatica联结组件、路由组件