Informatica组件应⽤详解
Informatica组件介绍
⼀、update的功能
Update 主要是与lookup相组合的搭档。根据lookup来与源表数据相对⽐,来跟新数据数据抽取。它起到⼀个插⼊和拒绝的作⽤。
1.Powercenter的更新策略包括两个⽅⾯:
A.在Mapping中:⽤Update Strategy Transformation标识⾏为Insert,
Update,Delete或者Reject;
B.在Session中:配置Treat source row as 属性(Insert,Update,Delete
或者Data driven),配置Target的属性(Insert,Update [as Update](只
是更新) | [as Insert](把更新视为新增) | [else Insert](先更新,更新
不到则新增) ,Delete,Truncate target table option);
2.在Update Strategy Expression中可以输⼊常量(DD_INSERT, DD_UPDATE,
DD_DELETE, DD_REJECT)或者数字值(0,1,2,3),其它数字值被解析为0,可以⽤IIF或者DECODE函数构建逻辑表达式来区别每⼀⾏的更新策略;
3.Forward Rejected Rows:勾选时被Rejected的⾏会存⼊对应Target配置的Reject
⽂件中去,不选时,可能会写⼊Session Log中去,根椐当前Transformation的
Tracing Level的属性来决定;如果在会话属性中配置了出错⾏⽇志属性,则不会⽣成Reject⽂件;
⼆、Expression 的功能
表达式编辑器可以使⽤不同的颜⾊来标记表达式的语法,以便很好的阅读。如果你有最新的Rich Edit,riched20.dll,安装到
了系统,表达式显⽰表达式函数为兰⾊,注释式灰⾊,引⽤的字符串式绿⾊。
你可以调整编辑器的⼤⼩。⽤拖拽边的⽅法来扩⼤对话框。Designer保存这个新的⼤⼩像客户机设置⼀样。
1.⽤来执⾏单⾏计算,在计算表达式中,可以使⽤输⼊端⼝,输⼊/输出端⼝,可以使
⽤函数以及⾮连接的Lookup,也可以使⽤变量端⼝;
2.数据来源只能⼀个
三、Filter 的功能
功能:根据条件过滤到不符合条件的⾏。
你可以使⽤SALARY > 30000来过滤掉SALARY⼩于等于3000的⾏。
过滤条件:过滤条件就是可以返回真或假的表达式。可以是⼀表达式,也可以是⼏个表达式,但表达式之间是与关系。如果你在条件中输⼊的是SALARY > 30000 和SALARY < 100000,他们就等于SALARY > 30000 AND SALARY < 100000。
1.Filter⽤来过滤数据,被过滤掉的数据不会写⼊Session Log,也不会写⼊Reject File;
2.将Filter尽可能地靠近Source可以提升性能;
3.Filter只能接受来⾃单个Transformation的数据流;
4.Filter只有⼀种输⼊/输出端⼝,默认值⽆效;
5.只有Filter Condition评估为真(或者⾮零数值)的记录才能通过;
6.如果有可能,⽤Source Qualifier代替Filter可以取得更好的性能。
四、Aggregator 的功能
聚合转换:可⽤于聚合统计,如求和、取平均值、返回特定⾏等等。可以使⽤聚合转换对多组执⾏计算,⽽表达式转换只允许逐⾏进⾏转换。
聚合转换组件:聚合表达式、分组依据端⼝、排序输⼊、聚合⾼速缓存
1.Aggregator可⽤于聚合统计,和SQL语句不同的是,可以针对不同的计算指定不同的条
件,并可输出⾮Group By的栏位;
2.⽤于Group By的端⼝可以是输⼊的,输⼊输出的,输出的或者变量端⼝,⽤到的输出
及变量端⼝中不能含有统计函数;
3.统计端⼝可以包含统计函数(共有15个),可以进⾏两层嵌套,但要求所有的统计端⼝
都进⾏嵌套;
4.对于那些即⾮Group By⼜⾮统计的端⼝,返回最后⼀次收到的那⼀⾏;
5.Sorted Input属性表⽰输⼊的数据已经按Group By端⼝的要求排好了顺,这样能提⾼
性能,输⼊部分数据就能有部分结果,源和⽬标的组件能同时⼯作,在没有选这个属性的情况下,需要等到所有数据输⼊完成才能开始有统计结果;注意:当选择Sorted Input
属性,但是输⼊数据未排序时。Session将failed。当aggregate expression包含嵌套aggregate functions或者采⽤incremental aggregation或者Treat source rows as 是data driven时,不能⽤Sorted Input属性。
6.在上⾯属性未选的情况下,需要⽤到索引CACHE和数据CACHE
五、lookup 的功能
获得⼀个关联的值。例如:源⾥包含employee ID,但你还需要employee name。
⽤于计算的植。例如:只是汇率或者个⼈所得税之类的固定数值,不是计算得出来的数据。Update slowly changing dimension tables。主要是根据条件查出原表,若查出了,就把⾃⼰添加的标志位设为真,否则就设置为假。
1.Lookup根椐输⼊值从数据库或者平⾯⽂件中查数据;
2.Lookup分为连接型和⾮连接型的:
A.连接型的可以传送多个返回值给其它的Transformation,⾮连接型的只能
有⼀个返回端⼝,在表达式中⽤Lookup函数(:LKP())来调⽤;
B.连接型的可以利⽤到默认值,当没有匹配记录时,⾮连接型的总是返回空;
3.Lookup可以配置成使⽤CACHE,对平⾯⽂件这项必选,Informatica Server在条件
栏位上建⽴索引CACHE,在其它栏位上建⽴数据CACHE,如果分配的CACHE空间不够就存放在CACHE⽂件中;
4.CACHE⽂件可以是临时的,也可以是固定化的;
5.当Lookup配置成动态时,对应的表是Target,如果输⼊⾏连接栏位在CACHE中没
有到匹配记录,就在CACHE中插⼊⼀⾏,如果到了就更新CACHE或者不更新CACHE,取决于⽐较栏位是否匹配,给标志栏位NewLookupRow赋值0(Unchange),1(Insert),2(Update);
6.Lookup的端⼝除了I,O之外,还有L和R;
7.多匹配⾏处理策略:返回第⼀⾏,返回最⼀⾏,报错;
8.在数据库Lookup使⽤CACHE的前提下可以使⽤Override SQL,下⾯情形下适于使
⽤Override SQL:
A.增加⼀个Where⼦句;
B.指定不同于默认SQL的Order By⼦句,在带有Order By⼦句的Override SQL
后加上--,⽬的是屏蔽掉系统⾃动产⽣的Order By⼦句;
(PowerCenter 服务器是默认是按lookup的栏位来Order By的,如果你在
Override⾥⾯想要覆盖它的Order By⽅式,⼀定必须在结尾输⼊’--‘注
释符来覆盖,否则lookup会失败,⽽且在新的Order by ⾥⾯要有LookUp
Condition包含的栏位,⽽且顺序需要⼀致)
C.Lookup表名或者栏位中包含保留字或者栏位名中含/时,⽤引号将保留字引
起来;
(如果look up栏位⾥⾯包含了db的保留字,那么需要在pm⽬录下建⽴⼀
个含有那些保留字的的⽂件,pm会在保留字周围放置⼀些引
⽤,来解决和服务器冲突的问题.)
D.需要在Lookup查询中使⽤参数或者变量时;
E.其它情况,⽐如从⼀个连接中返回结果或者要对返回作函数处理后的结果作
为CACHE;
truncate可以加条件吗9.关于Lookup的条件匹配:
A.条件两边的端⼝必须匹配;
B.输⼊端⼝允许在条件中出现多次;
C.多个条件间的关系是AND;
D.相等条件可以匹配空值(NULL=NULL);
E.如果条件中有等于和不等于,将所有等于放在前⾯;
10.如果允许,可以在Lookup表的连接条件栏位上建⽴索引,以改进性能;
11.LookUp⼀定要有输⼊port,SQL Overrid不能覆盖condition的作⽤
12.Dynamic LookUp⼀般⽤于查⽬标表是否已经有Source传过来的记录,然后根据更
新标志(flag)做处理.也就是把⽬标表的所有数据先⽤⽂件作为缓存存放起来,然后Source传过来的记录与缓存⽂件的数据⽐较并且由属性(insert else
update,update else insert)决定是否更新缓存⽂件.
13.理解Associated Port的意义;
关联端⼝,当Dynamic Look Up Cache时,PM如何把in port的资料和cache⾥⾯的资料来对⽐和关联,然后产⽣新的cache和NewLookUpRow
就是需要⽤Associated Port来关联in port端⼝的资料或者Sequrence了。
Condition 相关的Fields端⼝会被⾃动关联.只有有连线出去的port的⽐较才有意
义.也就是说如果没有连线出去,两个值尽管不相等,NewLookUpRow还是为0.⽽且Null=Null
14.Ignore in Comparison
可以不去⽐较的栏位(但是⾄少要有⼀个,要不Look Up会失败),如果适当使⽤可以提⾼性能。
忽略⽐较,当这个值之外所有⽐较值都相同则不更新Cache,,NewLookUpRow=0
当其它⽐较值还有不相同时则更新Cache. NewLookUpRow=,1 or 2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。