您的位置:首页 > 其它

Powercenter 基础知识介绍 - 3

2013-01-04 17:09 155 查看

1
Transformation

1.1
Source Qualifier(数据源编辑,Relational)

Source Qualifier有下列用途:

连接同源的数据集;
过滤源数据;
指定连接条件(等连,非等连,like)和类型(内连,外连);
指定排序栏位(当Mapping中用到Aggregator或者Joiner时,排序可以改进性能);
Distinct;
Override Select;

Source Qualifier执行从数据库数据类型到Powercenter数据类型间的转换;
当一个Mapping中有多个Source Qualifier连到多个Target时可用Target Load Order指定装载顺序;
在Source Qualifier中的多个地方可以使用参数或变量,传入SQL语句用的是字符串格式,所以大部分时候都需要用引号;
Source Qualifier只为连出的Port产生SQL语句,需要注意的是,Override SQL是和连出线的Port顺序相关的,而且,其它属性如Join,Filter,Sorted Ports,Distinct会失效;
这些属性都可以在Session 属性中被Override(覆盖)。
一切检索的内容都是以SQL Query最高优先级,如果没有sql query就找

User Join Define和filter,如果有SQL Query那么SQ拉出的端口必须与SQL Query的Select 个数一样多, sql query多表时,select到的field的table的Source是一定需带上的,当需要多个schema作为源的话,则一定需要sql querry

一切检索的内容都是以SQL Query最高优先级,如果没有sql query就找

User Join Define和filter,如果有SQL Query那么SQ拉出的端口必须与SQL Query的Select 个数一样多, sql query多表时,select到的field的table的Source是一定需带上的,当需要多个schema作为源的话,则一定需要sql querry

Pre SQL和Post SQL在seesion执行前或者结束时会触发。比如可以把session 执行的时间写入到某些地方,获取执行电脑的ip地址等用处.

1.2
Update Strategy

Powercenter的更新策略包括两个方面:

在Mapping中:用Update Strategy Transformation标识行为Insert,Update,Delete或者Reject;
在Session中:配置Treat source row as 属性(Insert,Update,Delete或者Data driven),配置Target的属性(Insert,Update [as Update](只是更新) | [as Insert](把更新视为新增) | [else Insert](先更新,更新不到则新增) ,Delete,Truncate target table option);

在Update Strategy Expression中可以输入常量(DD_INSERT, DD_UPDATE, DD_DELETE, DD_REJECT)或者数字值 (0,1,2,3),其它数字值被解析为0,可以用IIF或者DECODE函数构建逻辑表达式来区别每一行的更新策略;
Forward Rejected Rows:勾选时被Rejected的行会存入对应Target配置的Reject文件中去,不选时,可能会写入Session Log中去,根椐当前Transformation的Tracing Level的属性来决定;如果在会话属性中配置了出错行日志属性,则不会生成Reject文件;

1.3
Expression

用来执行单行计算,在计算表达式中,可以使用输入端口,输入/输出端口,可以使用函数以及非连接的Lookup,也可以使用变量端口;
数据来源只能一个

1.4
Lookup

Lookup根椐输入值从数据库或者平面文件中查找数据;
Lookup分为连接型和非连接型的:

连接型的可以传送多个返回值给其它的Transformation,非连接型的只能有一个返回端口,在表达式中用Lookup函数(:LKP())来调用;
连接型的可以利用到默认值,当没有匹配记录时,非连接型的总是返回空;

Lookup可以配置成使用CACHE,对平面文件这项必选,Informatica Server在条件栏位上建立索引CACHE,在其它栏位上建立数据CACHE,如果分配的CACHE空间不够就存放在CACHE文件中;
CACHE文件可以是临时的,也可以是固定化的;
当Lookup配置成动态时,对应的表是Target,如果输入行连接栏位在CACHE中没有找到匹配记录,就在CACHE中插入一行,如果找到了就更新CACHE或者不更新CACHE,取决于比较栏位是否匹配,给标志栏位NewLookupRow赋值0(Unchange),1(Insert),2(Update);
Lookup的端口除了I,O之外,还有L和R;
多匹配行处理策略:返回第一行,返回最一行,报错;
在数据库Lookup使用CACHE的前提下可以使用Override SQL,下面情形下适于使用Override SQL:

增加一个Where子句;
指定不同于默认SQL的Order By子句,在带有Order By子句的Override SQL后加上--,目的是屏蔽掉系统自动产生的Order By子句;

(PowerCenter 服务器是默认是按lookup的栏位来Order By的,如果你在Override里面想要覆盖它的Order By方式,一定必须在结尾输入’--‘注释符来覆盖,否则lookup会失败,而且在新的Order by 里面要有LookUp Condition包含的栏位,而且顺序需要一致)

Lookup表名或者栏位中包含保留字或者栏位名中含/时,用引号将保留字引起来;

(如果look up栏位里面包含了db的保留字,那么需要在pm目录下建立一个含有那些保留字的reswords.txt的文件,pm会在保留字周围放置一些引用,来解决和服务器冲突的问题.)

需要在Lookup查询中使用参数或者变量时;
其它情况,比如从一个连接中返回结果或者要对返回作函数处理后的结果作为CACHE;

关于Lookup的条件匹配:

条件两边的端口必须匹配;
输入端口允许在条件中出现多次;
多个条件间的关系是AND;
相等条件可以匹配空值(NULL=NULL);
如果条件中有等于和不等于,将所有等于放在前面;

如果允许,可以在Lookup表的连接条件栏位上建立索引,以改进性能;
LookUp一定要有输入port,SQL Overrid不能覆盖condition的作用
Dynamic LookUp一般用于查找目标表是否已经有Source传过来的记录,然后根据更新标志(flag)做处理.也就是把目标表的所有数据先用文件作为缓存存放起来,然后Source传过来的记录与缓存文件的数据比较并且由属性(insert else update,update else insert)决定是否更新缓存文件.
理解Associated Port的意义;

关联端口,当Dynamic Look Up Cache时,PM如何把in port的资料和cache里面的资料来对比和关联,然后产生新的cache和NewLookUpRow

就是需要用Associated Port来关联in port端口的资料或者Sequrence了。Condition 相关的Fields端口会被自动关联.只有有连线出去的port的比较才有意义.也就是说如果没有连线出去,两个值尽管不相等,NewLookUpRow还是为0.而且Null=Null

Ignore in Comparison

可以不去比较的栏位(但是至少要有一个,要不Look Up会失败),如果适当使用可以提高性能。

忽略比较,当这个值之外所有比较值都相同则不更新Cache,,NewLookUpRow=0

当其它比较值还有不相同时则更新Cache. NewLookUpRow=,1 or 2

Output Old Value On Update:当更新的时候不会更新新值到Cache,全部以Cache里面的值输出,
更多LKP属性可见

1.5
Aggregator

Aggregator可用于聚合统计,和SQL语句不同的是,可以针对不同的计算指定不同的条件,并可输出非Group By的栏位;
用于Group By的端口可以是输入的, 输入输出的,输出的或者变量端口,用到的输出及变量端口中不能含有统计函数;
统计端口可以包含统计函数(共有15个),可以进行两层嵌套,但要求所有的统计端口都进行嵌套;
对于那些即非Group By又非统计的端口,返回最后一次收到的那一行;
Sorted Input属性表示输入的数据已经按Group By端口的要求排好了顺,这样能提高性能,输入部分数据就能有部分结果,源和目标的组件能同时工作,在没有选这个属性的情况下,需要等到所有数据输入完成才能开始有统计结果;注意:当选择Sorted
Input属性,但是输入数据未排序时。Session将failed。当aggregate expression包含嵌套aggregate functions或者采用incremental aggregation或者Treat source rows as是data driven时,不能用Sorted Input属性。
在上面属性未选的情况下,需要用到索引CACHE和数据CACHE

1.6
Filter

Filter用来过滤数据,被过滤掉的数据不会写入Session Log,也不会写入Reject File;
将Filter尽可能地靠近Source可以提升性能;
Filter只能接受来自单个Transformation的数据流;
Filter只有一种输入/输出端口,默认值无效;
只有Filter Condition评估为真(或者非零数值)的记录才能通过;
如果有可能,用Source Qualifier代替Filter可以取得更好的性能。

1.7
Joiner

Joiner可以用来连接两个相关的不同来源的数据集;
至少需要指定一个匹配端口;
对两个来源有如下限制:

两个数据源要求是来自两个Pipeline或者一个Pipeline的两个分支;
任何一个Pipeline中都不能含有Update Stragegy;
Sequence不能直接连到Joiner;

Joiner的主要属性如下:

比较时大小写敏感;
缓存目录,数据缓存的大小,索引缓存的大小;
连接类型(Normal,Master Outer,Detail Outer,Full Outer);
输入已排序:输入数据已按连接端口的顺序排好序,这可以减少磁盘输入及输出,提高了Joiner的性能;

指定非重复值少的表作为Master表可以提升性能,默认情况下,第一个加入的数据源是Detail;
只支持相等连接,当使用多个连接端口时,连接的顺序对性能有影响;
连接端口如果含有NULL值,连接不会成功;
Joiner一次只能连接两个数据源,如果有多个数据源要进行连接,使用多个Joiner;
Joiner可以连接来自同一个Source的数据流(自连),有两个方法:如果Joiner选择了Sorted Input属性,可以用一个Source Instance来实现,否则就需要Source的两个Instance;
Joiner的Index Cache(连接端口) 以及Data Cache(其它端口)是针对Master表建立的;
在不同的配置条件下,Joiner有不同的阻塞策略,这样可以用更少的Cache,对性能有不同的影响;
在有可能的情况下,尽可能在数据库完成连接处理;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: