12Informatica_组件使用及优化3PowerCenterDesigner组件研究组件分为Passive组件和Active组件,Passive组件流入流出组件的行数不会发生变化,expression组件就属于Passive组件;Active组件流入流出组件的行数会发生变化,例如aggre组件。Passive组件流入流出组件的行数不发生变化例如:Expression、Lookup组件Active组件流入流出组件的行数会发生变化例如:Aggregator、Router、Filter组件4流入组件的数据项在日志中显示详细级别SourceQualifier组件中的过滤条件设置SourceQualifier组件5作用:如果添加了关系数据库中的表或平文件作为Source,需要连接SourceQualifier组件,才能从源表中读取出数据(非XML)。SourceQualifier代表了PowerCenterServer在运行会话时读取的数据行。常用属性:SqlQuery属性:编辑SQL脚本,该属性将会覆盖默认查询,即会覆盖以下几个属性。UserDefinedJoin属性:定义内连接或外连接SourceFilter属性:即添加WHERE条件子句至默认的SQL查询,实现过滤数据。NumberOfSortedPorts属性:排序的字段个数,大于0时即添加orderby子句至默认的SQL查询。TracingLevel属性:共有四级,表示log的复杂程度。SelectDistinct属性:选中表示去除重复记录,即添加SELECTDISTINCT语句至默认的SQL查询。PreSQL属性:读取源之前在源数据库上运行的会话前SQL命令。PostSQL属性:写入目标之后在源数据库上运行的会话后SQL命令。6Expression组件7作用:基于行级的数据项赋值、修改、计算在同行记录中可新增、减少数据项应用范围:数据类型转换,例如Expression:to_date(Port1,’yyyymmdd’)数据项计算,例如Expression:(Port1+Port2)/Port3新增变量,例如Expression:i=i+1创建Expression组件后,将需要用的字段从上一端口拖曳到Expression组件,双击组件,打开编辑,新增创建所需的输出端口,只勾选“O”为只输出端口,在“Expression”中编辑表达式,确保分配与表达式返回值相匹配的端口数据类型。输出端口的命名惯例为OUT_PORTNAME。可以利用一个Expression组件实现多个表达式转换工作,只要为多个输出端口输入一个表达式,就可以在转换中创建任意多个输出端口8Aggregator组件9作用:对多组记录执行聚合计算。用法:将需要聚合运行的字段拖曳到Aggregator组件,双击组件,在Port选项卡中,勾选要分组的列,新增输出端口,编辑聚合运算表达式。与sort组件联合使用可提高性能。对于聚合组件来讲,肯定是要有至少一个分组的字段,对此字段勾选【GroupBy】选项,对于要进行聚合计算的数值型表达式,选中【Expression】,点击向下的箭头,会出现标记表达式的对话框,在这个对话框中可以进行sum、avg、max、min等聚合运算。可以使用该组件可以进行汇总计算,如平均值和求和等。Aggregatortransformation和Expressiontransformation不一样,在Aggregatortransformation中执行计算是要分组的。Expressiontransformation只允许你执行计算在row-by-row的基础上的。当你使用transformation建立汇总表达式的时候,使用条件语句来过滤行,比SQL语句要灵活的多。10例如:你使用如下的表达式来计算出所有commissions大于QUOTA的员工总的commissions:SUM(COMMISSION,COMMISSIONQUOTA)你也可以使用非汇总函数在汇总表达式中。例如下面的表达式:IIF(MAX(QUANTITY)0,MAX(QUANTITY),0))您可以输入任何有效的转换表达式。例如,以下表达式将计算所有收入超过50,000美元的员工的平均薪水:SUM(SALARY,SALARY50000)11Union组件12作用:合并多个数据源到一个结果集。与执行“UNIONALL”SQL语句结果相似,联合转换不会删除重复行。使用规则:可以创建多个输入组,但只能创建一个输出组。所有输入组和输出组均必须具有匹配的端口。所有组中的精度、数据类型和标度必须相同。联合转换不会删除重复行。要删除重复行,您必须添加另一个转换,例如Router或Filter转换。不能使用以Union组件作为上游的序列生成器或更新策略转换。联合转换不会生成事务。选项卡设置:“Groups”选项卡。您可以创建和删除输入组。在“Ports”选项卡上能显示创建了的组。“GroupPorts”选项卡。您可以创建和删除输入组的端口。在“Ports”选项卡上能显示创建了的端口。13Joiner组件14作用:连接查询指定非重复值少的表作为Master表可以提升性能,默认情况下,第一个加入的数据源是Detail;只支持相等连接,当使用多个连接端口时,连接的顺序对性能有影响;连接端口如果含有NULL值,连接不会成功;Joiner一次只能连接两个数据源,如果有多个数据源要进行连接,使用多个Joiner;Joiner可以连接来自同一个Source的数据流(自连),有两个方法:如果Joiner选择了SortedInput属性,可以用一个SourceInstance来实现,否则就需要Source的两个Instance;注意:在JoinType中选择好你需要的类型。如果你选择NormalJoin将会严格匹配记录。如果你选择MasterOuterJoin会把DetailSource表中的记录全部选出来。如果你选择DetailOuterJoin会把MasterSource表中的记录全部选出来本组件一次只能连接两个源,如果有多个源就使用多个该种组件,直到你把所有你想的都连接了为止。15SequenceGenerator组件16作用:生成序列数值。可以使用它创建唯一的主键值、替代缺失的主键或在一定有序数字范围内循环。SequenceGenerator控件提供两个输出端口:NEXTVAL和CURRVAL:NEXTVAL连接NEXTVAL至多个转换,从而为每个转换中的每行生成唯一的值。通过将NEXTVAL端口连接至转换或目标以生成序列号。连接NEXTVAL端口至下游转换,从而生成基于当前值和增量属性的序列。CURRVALCURRVAL是NEXTVAL加上“增量”值。当NEXTVAL端口已连接下游转换时,您通常只需要连接CURRVAL端口。当行输入连接到CURRVAL端口的转换时,PowerCenterServer会传递最后创建的NEXTVAL值加1。17常用属性介绍:StartValue属性:已生成序列的开始值。如果勾选“Cycle”,当序列达到结束值时循环回此值。IncrementBy属性:增量值。默认值为1。EndValue属性:结束值。如果序列值达到此值,但未勾选“Cycle”,则Session将失败。CurrentValue属性:序列的当前值。Cycle属性:是否循环。(勾选后会按顺序生成序列,重新执行序列不会重复,未勾选时,重新执行序列会产生重复值)NumberofCachedValues属性:一次高速缓存的序列值数。当多个会话使用相同的可再用序列生成器时,使用此选项可以确保每个会话收到唯一的值。Reset属性:如果勾选,则每个Session会初始当前值。18Rank组件19作用:排序记录,只输出最顶层或最底层的一定记录数。用法:在Port选项卡中,在“R”列选择要排序的列。类似于Aggregator组件,Rank组件允许您对信息分组Rank组件会自动创建RANKINDEX端口,仅为输出端口,存储组中每行的等级位置。常用属性:Top/Button:选择是取最大值还是最小值NumberofRanks:选择排名位数,即需要进行等级排序的行的数量20Router组件21作用:与Filter组件相似,能按照条件执行过滤,不同的是能分组过滤数据。Router可以用一或多个Filter来取代,不同的是用Router来生成多个组时输入数据只需处理一次,所以效率更高;Router由一个输入组,一到多个用户定义的输出组和一个默认组组成,每一个用户定义的输出组含一个测试条件,满足条件的输入数据会进入相应的用户定义组,不满足所有用户定义条件的数据会进入默认组。如果某一行符合多个输出组的评估条件,则出现在多个组的输出数中;可以将一个输出组的端口连到多个Transformation或者Target上,但不能将多个输出组的端口连到一个Transformation或者Target上;22Lookup组件23作用:从关系型的表、视图或者同义词中根据lookup条件查询lookupport,返回查询结果,供mapping中的其他控件使用或者插入到目标表。包括已连接和未连接查找两种方式。从数据库表中,按条件查找相关的值并且传送给其他的对象。Connected:直接从其他控件获得输入信息;可以使用静态或者动态的Cache;只缓冲mapping中用到的port;每条记录可以返回多个column,并且能够插入到动态Cache中;查询条件无匹配时,返回所有输出port的默认值,如果使用动态Cache,InformaticaServer把记录毫无改变的保留在Cache中;支持用户定义的默认值;返回多个输出值到另一个控件中Unconnected:间接的从其他控件的:LKP表达式的结果来获得输入信息;只能使用静态Cache;缓冲所有的port;每条记录只能返回一列;查询条件无匹配时,返回NULL;不支持用户定义的默认值;将返回值输出到定义:LKP表达式的控件中24常用属性:LookupSQLOverride:只能在cacheenable的情况下才能用,另外不要输入ORDERBY子句,即使输入INFORMATICA也会产生ORDERBY子句LookupCachingEnabled:如果选中,查询一次表,以后的记录都从缓冲中去查询;如果不选,每条记录都从数据库中查询一次LookupPolicyonMultipleMatch:确定在uncached和staticcache的情况下如何处理查询得到的多条记录,可以取得第一条、最后一条或者是报错;在dynamiccached的情况下,如果查询得到多条记录,会报错DynamicLookupCache:当把经过的记录插入到目标表的同时,插入或者更新cache里面的记录25在实际的开发过程中,对于Lookuptransformation中Cache属性的设置,可以总结出这么几条经验:对于表记录较少的表,总是推荐使用Cache.对于记录条数达到数百万条的大表而言,使用Cache并不总是正确的方式,因为创建Cache文件所付出的代价可能要超过你从Cache文件中快速返回结果所获得的收益。只有在大表不能建立索引的情况下我们才对大表使用Cache.一对于大表而言,如果你能够使用索引,就不必建立Cache