Informatica基础系列(四)——联结组件、路由组件

目录:

Informatica基础系列(零)——前言

Informatica基础系列(一)——Helloworld

Informatica基础系列(二)——更新策略转换组件

Informatica基础系列(三)——表达式、筛选、查找组件

Informatica基础系列(四)——联结组件、路由组件

Informatica基础系列(五)——参数与变量

Informatica基础系列(六)——发布环境、迁移知识库

Informatica基础系列(七)——常见问题、注意事项

Informatica基础系列(外)——不支持 MySQL Community 版本的解决方案

正文:

今天继续分享 Infa,这次介绍两个组件的用法:联结组件(Joiner Transformation,以下简称 JT)、路由组件(Router Transformation,以下简称 RT)。

1. 概念介绍

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

2. demo 描述

先看下 source 数据,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
我们的需求是把 User_Source 和 Orders 做一个内联结,将对应字段 load 到 OrderDetail 和 OrderDetail_Oct10_Before,其中 OrderTime > ‘2017-10-10’ 的记录进 OrderDetail,其他记录进 OrderDetail_Oct10_Before。

3. 开发步骤

首先是把两个 source 都拖到工作区,然后拖一个 JT 进来,将 source 里我们需要的字段以及联结的字段连到 JT 进来,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
双击 JT,设置联结条件如下:
Informatica基础系列(四)——联结组件、路由组件
再拖一个 RT 进来,并将 JT 的字段拖到 RT 进来,并设置 RT 的分组条件,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
Informatica基础系列(四)——联结组件、路由组件
可以看到 RT 的视图已经变成两组数据了,其实还有一组默认的,如果两组条件都不满足,则分到默认分组,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
接下来就把需要的数据连到指定的 target 就好了,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
其实我这里连错了,因为我们把联结字段的 UserMobile 和 Mobile 都连到 RT 中了,导致疏忽了字段的对应关系,其实只需要连一个进来就可以了。修改后如下所示:
Informatica基础系列(四)——联结组件、路由组件
设置一下 workflow ,我们就直接用插入就可以,如下图所示:
Informatica基础系列(四)——联结组件、路由组件

4. 验证结果

运行一下,看下结果,正如我们希望的那样,数据都进来了,我把 source 和 target 都贴出来,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
Informatica基础系列(四)——联结组件、路由组件

5. 联结多表的另一种用法

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

下面简单介绍下 SQ 用法,首先 copy 一个 mapping,选中我们刚才做的 mapping,”ctrl+c/v” 就可以了。我们删除多余的部分,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
然后把 source 拖进来,保留一个 SQ,把两个 source 字段拖到 SQ,将我们需要的字段连到 RT,如下图所示:
Informatica基础系列(四)——联结组件、路由组件
双击 SQ,点击 “Generate SQL” 自动生成 sql,就完成了。要注意的是要先把字段连过去,再生成 sql。生成的 sql,我们可以修改,添加 where 条件以及连接其他的表,只要保证 “SELECT” 到 “FROM” 部分的内容不变就可以了。
Informatica基础系列(四)——联结组件、路由组件
目前为止,Mapping 的基础组件就介绍完了,其他的组件不再详细介绍。后面会介绍其他的内容,比如使用参数、环境迁移、知识库迁移,再抽出一篇专门介绍其他零碎知识点汇总。Infa 的内容远不至此,更多内容不在此基础系列范围内,比如 Infa 监控报警机制等。另外,Infa 比较权威的社区 是 KB,上面可以搜索关于 Infa 的问题以及解决方案。

欢迎关注我的微信公众号:惜福 / xifu_forever,微信扫一扫即可关注:

Informatica基础系列(四)——联结组件、路由组件