informatica mapplet组件怎么使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了informatica mapplet组件怎么使用相关的知识,希望对你有一定的参考价值。

1. INFORMATICA CLIENT的使用
1.1 Repository Manager 的使用
1.1.1 创建Repository。
前提:
a. 在ODBC数据源管理器中新建一个数据源连接至你要创建Repository的数据库(例:jzjxdev)
b. 要在你要连接的数据库中新建一个用户(例:name: ETL password: ETL)
现在你可以创建一个Repository了。选择Repository – Create Repository,输入Repository Name(例:JZJX),Database Username(例:etl),Database Password(例:etl),ODBC Data Source(例:jzjxdev),Native Connect String(数据库所在ip例:141.20.52.108)

1.1.2 添加Repository。
通过这一步你可以添加别人已经建好的Repository。
选择Repository – Add Repository,输入Repository Name(例:JZJX),Username(例:etl),点击ok就可以看到名为JZJX的Repository在左边的浏览器中,但是此时还看不到它的内容,要看到它的内容或者对它进行操作必须先连接它。

1.1.3 添加Folder
选择Folder – Create,输入文件夹名称即可。

1.2 Designer 的使用
首先连接Repository,可以看到该Repository在Repository Manager中创建的文件夹。

1.2.1 Sources
Sources文件夹下的表是抽取的来源表。
导入方法:
选择Tools菜单下的Source Analyzer,然后选择Sources菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Sources文件夹下。
说明:上面的导入过程导入的只是表结构,你也可以自己创建来源表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。

1.2.2 Targets
Targets文件夹下的表是抽取的目标表,也就是抽取结果的存放表.
导入方法: 选择Tools菜单下的Warehouse Designer,然后选择Targets菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Targets文件夹下。
说明:上面的导入过程导入的只是表结构,你也可以自己创建目标表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。

1.2.3 Mappings 的设计
选择Tools菜单下的Mapping Designer才能进行Mapping的设计。
每个Mapping都由来源表,transformation和目标表组成,描述数据抽取的过程。来源表和目标表可以从Sources和Targets文件夹拖拽到工作区,但是transformation一般来说是需要自己创建的。Mapping的设计关键是transformation的使用,它的使用关系到数据抽取的正确性和效率。下面说明各个transformation的作用和用法。
(Active:表示该transformation可以改变通过它的数据的行数;
Passive:表示该transformation不改变通过它的数据的行数;
Connected:表示该transformation要连接到数据流;
Unconnected:表示该transformation可以不连接到数据流)

1.2.3.1 Source Qualifier
作用:根据查询SQL文从关系表或平坦文件查出所要记录
用法:创建好Source Qualifier(下简称SQ) 后,将需要的用的字段从来源表拖拽到SQ ,双击SQ,对SQ的属性进行设置。
Select Distinct 属性:选中的话表明结果记录将去除重复值;
Tracing Level属性: 共有四级,表示log的复杂程度;
Number Of Sorted Ports属性: 排序的字段个数,值大于0时Sql Query中的sql 文将出现order by 从句;
Sql Filter属性: 属性值将出现在Sql Query属性值的where表达式中;
User Defined Join属性: 用户如果要定义外部连接可在此写(例: REG_CUSTOMER LEFT OUTER JOIN PURCHASES on
(REG_CUSTOMER.CUST_ID = PURCHASES.CUST_ID AND PURCHASES.AMOUNT > 100.00) )
Sql Query属性:值是一条sql 文,session运行时会执行这条sql 文进行查询。
命名方式:SQ_Name
类型:Active/Connected
注意:SQ的输入只能来自来源表; User Defined Join属性值必须用括起来;在更改了SQ的属性值之后一定要点击Sql Query属性的
generate sql按钮重新生成sql文。

1.2.3.2 Update Strategy
作用:决定该行进行插入,删除,更新,忽略中的哪一种操作
用法:创建好Update Strategy(下简称US)后,将需要的用的字段从transformation拖拽到US ,双击US,对US的属性进行设置。US的设
置关键是Update Strategy Expression属性的设置,这个表达式使用IIF 或DECODE 函数对记录的每一行进行判断,为每一行赋予
DD_INSERT,DD_UPDATE,DD_DELETE,DD_REJECT(这四个是常量,值分别为0,1,2,3)中任意一个值,表明该行在数据库中将进行
何种操作。
命名方式:UPD_Name
类型:Active/Connected
注意:mapping中有US时,mapping对应的session的在配置属性时必须把Treat rows属性设置为Data Driven,否则US将不起作用。

1.2.3.3 Expression
作用:计算一个值
用法:创建好expression_r(下简称EXP)后,将需要的用的字段从来源表拖拽到EXP,双击EXP,
新增输出端口,编辑该端口的表达式。
命名方式:EXP_Name
类型:Passive/Connected
注意:要进行列运算一般用这个transformation; 此种transformation可以使用本地变量

1.2.3.4 Stored Procedure
作用:调用一个存储过程
用法:创建Stored Procedure(下简称SP)的时候连接数据库选择必要的存储过程。SP有连接和不连接到数据流两种用法。
连接到数据流方式跟一般的transformation类似,通过拖拽端口来实现数据流。
不连接到数据流分表达式调用和Pre-/Post Session两种方式。表达式调用方式中SP被Mapping中另一个transformation 中的表达式
调用。Pre-/Post Session方式就是在Session的属性中配置SP的运行时间,Source Pre-load(Session从源表查询数据之前),Source
Post-load(Session从源表查询数据之后),Target Pre-load(Session将数据插入目标表之前),Target Post-load(Session将
数据插入目标表之后)
命名方式:SP_Name
类型:Passive/Connected or Unconnected
注意:

1.2.3.5 Sequence Generator
作用:产生主键
用法:创建好Sequence Generator(下简称SEQ)后,双击SEQ,对SEQ的属性进行设置。Start Value属性是开始值,此属性只在选择了
Cycle选项才有效;Increment By 属性值是每次增加的值;End Value属性值是结束值;Current Value属性值是当前开始值;Cycle选
项被选择的话NEXTVAL的值达到End Value值之后会重新从Start Value开始;Reset选项被选择的话,服务器会为每个使用了该SEQ的
session的NEXTVAL值都从Current Value开始。
命名方式:SEQ_Name
类型:Passive/Connected
注意:这是一个只有两个输出端口没有输入端口的transformation.;
如果该SEQ时可重复使用的话,不能选择Reset选项。

1.2.3.6 Aggregator
作用:执行分组聚合运算
用法:创建好Aggregator(下简称AGG)后,将需要的用的字段从其他transformation拖拽到AGG ,双击AGG,在端口tab中每个端口有
group by 选项。钩上想要分组的列,新增端口,编写聚合表达式实现分组聚合运算。
命名方式:AGG_Name
类型:Active/Connected
注意:可使用本地变量

1.2.3.7 Filter
作用:过滤记录
用法:创建好Filter(下简称FIL)后,将需要的用的字段从transformation拖拽到FIL ,双击FIL,对FIL的属性进行设置。FIL的配置主
要是对Filter Condition的配置,Filter Condition 写入类似where条件的表达式即可。
命名方式:FIL_Name
类型:Active/Connected
注意:

1.2.3.8 Lookup
作用:查询值
用法:创建Lookup(下简称KP)的时候选择要查询的表。和Stored Procedure一样SP有连接和不连接到数据流两种用法。
连接到数据流方式将要关联查询的字段从其他的transformation拖拽过来,然后双击LKP进行属性的配置。Lookup Policy On
Multiple Match属性表明当查询到多个行时采取取第一行,取第二行,报错中哪个策略.Lookup Condition 属性值是查询的条件。
Lookup Sql Override属性值是查询执行的Sql文,我们可以在里面直接写Sql。Lookup Caching Enabled属性表明是否使用缓存,此项
一般选择为好,有利提高效率。Loopup Cache Persistent属性表明是否使用永久的缓存。
命名方式:LKP_Name
类型:Passive/Connected or Unconnected
注意:如果Lookup表的类型是来源表的话,请尽量使用Joiner;
一个已连接的LKP不能再被其他transformation的表达式调用;
如果查询表在session运行过程中不会改变,使用Loopup Cache Persistent属性可提高性能;
尽量不要在Lookup Sql Override中书写order by子句,因为cached LKP默认有order by ;

1.2.3.9 Joiner
作用:连接查询来自不同数据库的表或平坦文件
用法:创建好Joiner(下简称JNR)后,将需要的用的字段从transformation拖拽到JNR ,双击JNR,对JNR的属性进行设置。用于连接的
两个表一个称为detail表,一个称为master表。JNR属性中可配置Join Type(连接类型)为Normal Join,Master Outer Join,Detail
Outer Join 和Full Outer Join中任意一种。Normal Join相当于常规的inner join; Master Outer Join相当于常规的Detail left
outer join Master;Detail Outer Join相当于常规的Detail right outer join Master; Full Outer Join相当于常规的full outer
join。Join Condition属性值就是常规sql文on 后带的条件。
命名方式:JNR_Name
类型:Active/Connected
注意:尽量使用Normal Join,Master Outer Join.这两个的效率比另外两个更好

1.2.3.10 Normalizer
作用:格式化记录,这些记录可以是来自COBOL源
用法:
命名方式:NRM_Name
类型:Active/Connected
注意:

1.2.3.11 Router
作用:根据一组表达式将记录分类路由到多个transformation
用法:创建好Router(下简称RTR)后,将需要的用的字段从transformation拖拽到RTR,双击RTR,对RTR的属性进行设置。在Group tab
中添加组,为每组编辑该组的过滤条件。
命名方式:RTR_Name
类型:Active/Connected
注意:组过滤条件表达式的计算值必须是真或者假。

1.2.3.12 Rank
作用:排序记录,只输出最顶层或最低层的n个记录
用法:创建好Rank(下简称RNK)后,将需要的用的字段从transformation拖拽到RNK,双击RNK,对RNK的属性进行设置。在Ports tab中
有一个名为‘R’的列,选择你要排序的列。你还可以选择你想分组的列。在Properties tab中Top/Bottom属性,Top表示选择顶层的
记录,Bottom表示选择底层的记录; Number Of Ranks属性值是整数,表示要选择的记录条数。假设你在‘R’列中选择了名为’
Price’的列,而且Group By选择了‘Name’列,Top/Bottom属性选择的是‘Top’, Number Of Ranks属性值是2,那么将抽取过程是
这样的:以name分组取出每组中 Price最大的2列记录。
命名方式:RNK_Name
类型:Active/Connected
注意:可以使用本地变量

1.2.3.13 ERP Source Qualifier
作用:根据查询SQL文从ERP文件查出所要记录
用法:
命名方式:
类型:Active/Connected
注意:

1.2.3.14 XML Source Qualifier
作用:根据查询SQL文从XML文件查出所要记录
用法:
命名方式:XSQ_Name
类型:Passive/Connected
注意:

1.2.4 Mapping Parameters(参数) 和 Variables(变量)的使用
如果你在一个mapping中多次用到同一个值,又或者mapping中要用到一个在session运行才能决定的值,这时候可以使用mapping
parameters或variable。添加参数或变量的方法是:选择Mappings-Parameters and Variables,在窗口新增变量或者参数,并对它的
数据类型,数据大小,初始值进行设置。添加的参数和变量在本mapping的transformation的表达式中就可以使用了。这些参数和变
量的值还可以设置在.txt文件中,建session或者batch的时候把这个文件的路径设置在Parameter输入框中就行了。
Mapping参数变量的命名方式:$$NAME
存放参数变量的.txt文件的格式:folder_name可写可不写
[folder_name.session_name]
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value
[folder_name.session2_name]
parameter_name=value
variable_name=value
mapplet_name.variable_name=value
[folder2_name.session_name]
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value

1.2.5 Mapping 的调试
选择Mappings–Debugger–Start Debugger,在点击‘下一步’的过程中选择调试过程运行在哪台服务器然后为来源表选择数据库,
最后到完成。等调试初始化好之后点击Mappings–Debugger–Continue(或按F5),即可开始调试,选择某个目标表即可看该表的结果
数据。如果还想看中间某个transformation的数据,在开始调试前为该transformation增加一个断点。

1.3 Server Manager 的使用
1.3.1 Register Server(注册服务器)
任何session都必须运行在某个服务器上,所以如果Server Manager里没有服务器的话必须注册一个,当然你也可注册多个服务器。
服务器的注册过程如下:
选择Server Configuration – Register Server,Server输入 的是要注册的服务器的名称;Host Name 输入的是运行了informatica
server的机器名或iprotocol选择TCP/IPort Number输入4001。最下面的是服务器的变量设置,设置的是session或batch运行时一些
文件的存放位置,比如说log文件bad 文件 cache文件,一般不用更改。这样一个服务器就注册到repository了,不过后面你可以双
击它重新编辑。

1.3.2 Add DataBase Connection(添加数据库连接)
选择Server Configuration – DataBase Connection,点击Add,然后选择数据库的类型。不同类型的数据库配置起来不一定一样,下面说明Oracle 和SQL Server两种数据库连接的配置。
Oracle类型数据库连接配置:Data Source 输入数据源名称;User Name输入数据库连接的用户名;Password输入数据库连接的密码;Connect String 输入Oracle TNS 服务名。
SQL Server 类型数据库连接配置: Data Source 输入数据源名称;User Name输入数据库连接的用户名;Password输入数据库连接的密码;Database Name输入数据库名称;Server Name输入数据库的ip地址;Domain Name输入数据库的域名。

1.3.3 Add Session(添加抽取任务)
Mapping 只是数据抽取过程的设计,要使这个过程运行必须为该Mapping建立对应的session,然后运行该session。选择Operations-Add Session,在窗口中选择一个Mapping点击ok会出现编辑该session的窗口。
Session输入框输入该session的名称;
server选择该session将运行在的服务器;
Treat rows有Insert,Delete,Update,Data Driven四个选项,表明抽取出来的数据在目标表中作何种操作,只有在session对应的mapping中有Update Stategy时才能选择Data Driven而且也必须选择Data Driven;
Source 框选择来源表所在的数据库;
Target Options 中的Insert,Update(as Update),Update(as Insert),Update(else Insert),Delete,Truncate table 选项的意思分别是:将insert作insert操作,将Update 作insert操作,将Update先做Update操作不成功再作insert操作,将delete作delete操作,在对目标表操作前删除目标表所有数据。这些选项如果与Update Stategy冲突server将以这里的设置为准,也就是说这里的设置可以覆盖Update Stategy的设置;Parameter输入框中输入session要用到的参数或变量的所在文件的路径;其他设置比较简单或者保持原来的值即可,这里就不再详细说明了。除了在添加 session的过程中可编辑session之外,双击已添加的session也对session重新设置。
注:如果mapping 中有Joiner的话,session的编辑窗口的Source Type就变成heterogeneous(不同类),这样就无法通过设置Source
来设置来源表的位置,只能在Source Location tab中为每个来源表设置位置。

1.3.4 Add Batch(添加批操作任务)
添加Batch可以将一系列的session串起来,这样就可以让必须按顺序执行的session有序的执行。添加方法:选择Operations-Add Batch,在窗口中对batch进行编辑。Batch输入框中输入batch 的名称;
Parameter输入框中输入batch中的session要用到的参数或变量的所在文件的路径,由于每个session都可以设置自己的parameter,所以batch中可以不设置,即使batch的parameter进行了设置也会被各个session自己的parameter设置所覆盖,但如果session用到了parameter在同一个文件中的话,把parameter文件的位置设置在batch的parameter输入框就显得更方便;Enabled选项表明是否让该batch有效;Concurrent选项表明是否让batch中的所有session并行地运行;Schedule中可设置batch的运行时间和运行频率。

1.3.5 Session和Batch 的运行
右键单击要运行的session或者batch,选择start即可让该session或者batch立刻运行。如果你的session或者batch的Schedule设置不是选择的‘Run only on demand’,那么该session或者batch就会在设置完后就处在Scheduled状态,时间一到就会自动运行。(可以右击服务器选择monitor来监视运行在该服务器下的session或者batch当前状态)。
参考技术A 其实informatica自带的帮助对各种组建和功能已经说明的很详细了,只要输入关键词查找就可以。worklet说白了就是为了使mapping看起来更简洁有条理,你完全可以把所有的session都放到一个mapping中执行,但是当你有几百个session的时候,可能按照一定的规则分类放到不同的worklet里面,再集中到mapping中更有可读性。哦,sorry,上面说的是worklet,但是mapplet也是差不多的作用,当一个mapping中涉及的源表太多的时候,分类放到mapplet里面,再集中到mapping中,更有条理更好读,但是需要注意的是,如果mapping中需要使用参数,mapplet中需要单独声明。

Informatica常用组件使用方法

 

表1中列出的是informatica中的所有组件。不会在本文档中出现的会在组件名后标出。

表1

Aggregator

Active/

Connected

Performs aggregate calculations.

Application Source Qualifier

Active/

Connected

Represents the rows that the Integration Service reads from an application, such as an ERP source, when it runs a session.

Custom

Active or Passive/

Connected

Calls a procedure in a shared library or DLL.

Expression

Passive/

Connected

Calculates a value.

External Procedure

Passive/

Connected or Unconnected

Calls a procedure in a shared library or in the COM layer of Windows.

Filter

Active/

Connected

Filters data.

HTTP Transformation

Passive/Connected

Connects to an HTTP server to read or update data.

Input

Passive/

Connected

Defines mapplet input rows. Available in the Mapplet Designer.

Java

Active or Passive/

Connected

Executes user logic coded in Java. The byte code for the user logic is stored in the repository.

Joiner

Active/

Connected

Joins data from different databases or flat file systems.

Lookup

Passive/

Connected or Unconnected

Looks up values.

Normalizer

Active/

Connected

Source qualifier for COBOL sources. Can also use in the pipeline to normalize data from relational or flat file sources.

Output

Passive/

Connected

Defines mapplet output rows. Available in the Mapplet Designer.

Rank

Active/

Connected

Limits records to a top or bottom range.

Router

Active/

Connected

Routes data into multiple transformations based on group conditions.

Sequence Generator

Passive/

Connected

Generates primary keys.

Sorter

Active/Connected

Sorts data based on a sort key.

Source Qualifier

Active/

Connected

Represents the rows that the Integration Service reads from a relational or flat file source when it runs a session.

SQL

Active or Passive/Connected

Executes SQL queries against a database.

Stored Procedure

Passive/

Connected or Unconnected

Calls a stored procedure.

Transaction Control

Active/

Connected

Defines commit and rollback transactions.

Union

Active/Connected

Merges data from different databases or flat file systems.

Update Strategy

Active/

Connected

Determines whether to insert, delete, update, or reject rows.

XML Generator

Active/

Connected

Reads data from one or more input ports and outputs XML through a single output port.

XML Parser

Active/

Connected

Reads XML from one input port and outputs data to one or more output ports.

XML Source Qualifier

Active/

Connected

Represents the rows that the Integration Service reads from an XML source when it runs a session.


Lookup

1.1 概要描述

获得一个关联的值。例如:源里包含employee ID,但你还需要employee name。

用于计算的植。例如:只是汇率或者个人所得税之类的固定数值,不是计算得出来的数据。

Update slowly changing dimension tables。主要是根据条件查出原表,若查出了,就把自己添加的标志位设为真,否则就设置为假。

1.2 Connected or unconnected

Connected 和 unconnected 的transformations的输入和输出是不同的,不同点如表2列出的。

表2

Connected Lookup

Unconnected Lookup

从 pipeline获得输入。

从另一个transformation的:LKP的表达式获得输入。

使用静态或者动态cache。

使用静态cache。

Cache中包括所有的 mapping中使用到的lookup columns(就是condition中的和被标记为输出的columns)。

Cache中包括所有condition中的、被标记为输出的columns以及被标记为return port的。

同行能够返回多个columns 或者加载到动态lookup cache中。

每行只能返回一个return port (R)。

如果没有匹配的数据,Integration Service会返回一个默认值。如果是动态缓存(cache),会加入一个新的行或者放着他不管。

如果没有匹配的数据,Integration Service会返回一个NULL。

如果有匹配的数据,Integration Service回返回一个结果包括所有被设置为输出的值。如果是动态缓存,Integration Service会任意的修改一行或者放着它不管。

如果有匹配的数据,Integration Service会返回一个被设置为return port的值。

输出所有的被标记为output的符合条件的数据。

返回一个值到使用:LKP调用它的表达式。

用户可以设置默认值。

用户不可以设置默认值。

Connected

下面是Integration Service处理connected Lookup transformation的过程:

1. 一个connected Lookup transformation通过pipeline从其他的transformation获得输入值。

2. 为每个输入行,Integration Service会通过lookup ports 和 condition从源或者缓存中查询。

3. 如果组件没有使用缓存或者使用的静态缓存,Integration Service会使用lookup query来返回值。

4. 如果组件使用的动态缓存,当Integration Service在缓存找不到这行,它会把这行插入到缓存中。当Integration Service找到这行,它会修改这行在缓存中或者什么都不做。它标记这行是插入、修改或者是不做变动。

5. Integration Service从查询中返回值到下一个transformation。

如果transformation使用动态缓存,你可以把这行通过Filter 或者 Router transformation来过滤后在到目标中。

unconnected

l 你可以在一个mapping中调用这个Lookup transformation多次。

l 下面的步骤描述了Integration Service处理一个unconnected Lookup transformation的过程:

1. 一个unconnected Lookup transformation从另一个transformation的一个:LKP表达式的结果中获得输入值,例如一个Update Strategy transformation。

2. Integration Service通过transformation 中的lookup ports 和 condition来查询。

3. Integration Service返回一个值到Lookup transformation 的return port 中。

4. Integration Service把值返回到:LKP表达式中。

l 步骤

1. 添加input ports。

2. 添加查询条件。

3. 指定返回值。

4. 从其他的组件中调用该lookup。

l 用途

unconnected lookups多数用于:

1. 在一个表达式测试一个lookup的值。

2. 在查询的基础上过滤。

3. 标记行基于查询的结果,例如:updating slowly changing dimension tables。

4. 调用同一个查找多次在一个mapping中。

1.3 Relational or flat file lookup

当你在建立一个Lookup transformation时,你可以选择查询flat file或者relational table。

Relational

你可以通过SQL的来override默认的SQL,这样可以你可以加where或者查询多个表。

flat file

使用下面选项在使用flat file时:

1. 指定源是indirect files的。

2. 使用sorted输入。

Tips

l 使用这些技巧在你配置一个Lookup transformation的时候:

l 给被用于查询条件的列加一个索引。

l 把=号放在条件的第一位。

l 查询的时候,完全加载小的表。

l 在数据库中Join tables比使用查询要高校的多。

l 为静态cache设置固定的大小。

l 使用:LKP来调用unconnected Lookup transformations。

1.4 Cached or uncached

有时,你可以在使用lookup组件查询表的时候,把组件设置成Cached 的来提高session的速度。如果你选择了Cached ,你可以选择使用动态的还是静态的。默认的是使用静态的。

Cached

我们可以在一个lookup组件中为要查询的表配置cache。当第一行数据进入lookup组件的时候,Integration Service会在内存为它建立一个cache。它分配内存基于你在组件或者session的属性中配置的数量。Integration Service把条件值保存索引cache,把output值保存在数据cache。Integration Service会为每一条进入这个组件的行查询cache。

Integration Service也同样会建立cache files用$PMCacheDir(相对路径,在consol中可以配置)中默认的。如果数据不适合内存cache时,Integration Service把超出的数据保存到cache files中。当seesion结束,Integration Service会释放cache记忆和删除cache files,除非你配置组件使用持久化的cache。

如果你使用flat file lookup,Integration Service总是会把它放在cache中。如果你配置flat file lookup为sorted input,Integration Service不会把它放入cache,如果条件类不是分组的。如果这些列是分组的,但是没有sorted,Integration Service会处理这个查询的方式和没有配置sorted input一样。

当你配置了lookup cache,你可以配置如下cache选项:

Building caches:你可以配置session建立多个cache用串行或者并行。当你建立串行的cache时,Integration Service会按照源行进入的顺序建立cache。当你建立并行的cache时,Integration Service不会等第一行进入Lookup transformation,就会建立cache。代替的是建立多个并行的cache。

Persistent cache:你可以保存lookup cache files并重用他们在Integration Service调用一个配置使用该cache的Lookup transformation。

Integration Service 对Persistent Caches的处理:

Mapping or Session Changes Between Sessions

Named Cache

Unnamed Cache

Integration Service cannot locate cache files.

Rebuilds cache.

Rebuilds cache.

Enable or disable the Enable High Precision option in session properties.

Fails session.

Rebuilds cache.

Edit the transformation in the Mapping Designer, Mapplet Designer, or Reusable Transformation Developer.*

Fails session.

Rebuilds cache.

Edit the mapping (excluding Lookup transformation).

Reuses cache.

Rebuilds cache.

Change database connection or the file location used to access the lookup table.

Fails session.

Rebuilds cache.

Change the Integration Service data movement mode.

Fails session.

Rebuilds cache.

Change the sort order in Unicode mode.

Fails session.

Rebuilds cache.

Change the Integration Service code page to a compatible code page.

Reuses cache.

Reuses cache.

Change the Integration Service code page to an incompatible code page.

Fails session.

Rebuilds cache.

*Editing properties such as transformation description or port description does not affect persistent cache handling.

Recache from source:当持久化的cache不是同步的时候,你可以配置Lookup transformation重新建立新的cache。

Static cache:你可以为所有的lookup source配置一个静态,或者只读的cache。默认的,Integration Service建立静态的cache。它为所有进入组件的lookup file或者 table 以及 looks up values建立cache。当条件为真的时候,Integration Service从cache中返回一个值。

Dynamic cache:为一个target table或者flat file source建立cache,并且向cache中插入新的行或者修改现有的行,当使用动态cache。在cache中,Integration Service动态的插入或者修改数据并且把数据传到目标中。

Shared cache:你可以共享cache在多个组件之间。你可以共享一个匿名的cache在一张mapping中。你可以共享一个有名的cache在同一个或者不同的mapping中。

当你没有为Lookup transformation配置cache,Integration Service为每一个输入行查询查询表。结果和处理过程是同样的,不论你是否设置cache。然而,使用cache可以改善session的性能。当被查询的表很大的时候可以使用cache最大的优化性能。

Cache Comparison

uncached lookup, static cache, dynamic cache的区别:

Uncached

Static Cache

Dynamic Cache

你不可以向cache中插入或者修改。

你不可以向cache中插入或者修改。

你可以向cache中插入或者修改,并且可以向目标传输。

不可以进行flat file的查询。

可以进行relational 或者 flat file的查询。

可以进行relational 或者 flat file的查询。

当条件为真的时候,Integration Service从表或者cache中返回一个值。

当条件为假的时候,Integration Service返回一个默认值或者为非连接组件返回NULL。

当条件为真的时候,Integration Service从表或者cache中返回一个值。

当条件为假的时候,Integration Service返回一个默认值或者为非连接组件返回NULL。

当条件为真的时候,Integration Service会根据行的类型来修改或者放着它不管。你可以向目标传输修改后的行。

当条件为假的时候,the Integration Service会根据行的类型来插入或者放着它不管。这意味着行不在cache或目标中。你可以把插入的行传给目标表。


Aggregator Transformation

Transformation type: Active 、Connected

功能概述:

可以使用该组件可以进行汇总计算,如平均值和求和等。Aggregator transformation和Expression transformation不一样,在Aggregator transformation中执行计算是要分组的。Expression transformation只允许你执行计算在row-by-row的基础上的。

当你使用transformation建立汇总表达式的时候,使用条件语句来过滤行,比SQL语句要灵活的多。

Integration Service执行汇总计算,只读和储存必要的数据组和行数据在aggregate cache中的。

Ports in the Aggregator Transformation (Aggregator Transformation中的port)

配置Aggregator Transformation中的port,完成如下的任务:

输入表达式在任何output port,使用条件或者非汇总函数在该port中。

建立多行汇总的output port。

配置任何input, input/output, output, 或者variable port作为group port。

改进性能,为后来的组件只连接必要的input/output port,减少数据cache的大小。

使用变量port作为本地变量。

建立一个连接像一个表达式一样。

Components of the Aggregator Transformation(汇总组件的组成)

汇总组件是一个active的组件,改变pipeline中的行数。汇总组件拥有下面的构成和选项:

汇总表达式(Aggregate expression):在一个output port中输入。可以包括非汇总表达式和条件子句。

汇总函数(Aggregate Functions)

你可以把一个汇总函数嵌套在另一个汇总函数中。

Transformation语言包括如下的汇总函数:

l AVG

l COUNT

l FIRST

l LAST

l MAX

l MEDIAN

l MIN

l PERCENTILE

l STDDEV

l SUM

l VARIANCE

当你使用这些函数的时候,你必须在一个汇总组件的表达式中。

嵌套汇总函数(Nested Aggregate Functions):

你可以在一个汇总组件中的不同的output port中包括多个单层的函数(相对于嵌套函数)和嵌套的函数。但是你不能把他们放到一个汇总组件中。因此,如果一个汇总组件中的任何一个output port中包括一个单层函数,你不可以使用一个嵌套的函数在任何其他的port中在这个汇总组件中。当你在一个汇总组件中同时包括单层函数和嵌套函数,Designer会标记mapping或者mapplet为不正确的。如果你需要同时建立单层函数和嵌套函数,请建立在不同的汇总组件中。

条件子句(Conditional Clauses):

使用条件子句在汇总组件中,为了减少用在汇总的行数。条件子句可以是任何可以返回真或假的子句。

例如:你使用如下的表达式来计算出所有commissions大于QUOTA的员工总的commissions:

SUM( COMMISSION, COMMISSION > QUOTA )

非汇总函数(Non-Aggregate Functions)

你也可以使用非汇总函数在汇总表达式中。例如下面的表达式:

IIF( MAX( QUANTITY ) > 0, MAX( QUANTITY ), 0))

汇总函数中的Null值(Null Values in Aggregate Functions)

当你配置Integration Service时,你可以选择怎样处理NULL值在一个汇总函数中。你可以选择处理汇总函数中的NULL值,当作NULL或者零。默认的Integration Service处理在汇总函数的NULL值为NULL。

分组port(Group by port):指定如何建立组。这个port可以是任何类型的port,如:input, input/output, output, 或者 variable port。当数据分组后,汇总组件返回每组中最后一行,如果没有其他的指定。

汇总组件让你定义组汇总,性能比汇总所有输入的值好。例如:你查一个区域的总销售额比查询整个公司的要快。

为汇总表达式定义一个组,选择适当的input, input/output, output, 和 variable ports在汇总组件中。你可以选择多个port来建立一个新的唯一的联合的组。Integration Service会为定义的每个组进行汇总。

当你把数据分组了,Integration Service会为每一个组返回一个值。如果你没有,Integration Service会为所有输入的port输出一行。

当你在汇总组件中使用port分成多个组的时候,Integration Service使用port的序号来决定按照哪个组的顺序。例如:例如使用ITEM_ID 和 QUANTITY分组与使用QUANTITY 和 ITEM_ID是不同的。下面的汇总组件用STORE_ID 和 ITEM分组:

如果你使用如下的数据:

STORE_ID

ITEM

QTY

PRICE

101

'battery'

3

2.99

101

'battery'

1

3.19

101

'battery'

2

2.59

101

'AAA'

2

2.45

201

'battery'

1

1.99

201

'battery'

4

1.59

301

'battery'

1

2.45

Integration Service 会执行如下的分组来执行汇总计算。

STORE_ID

ITEM

101

'battery'

101

'AAA'

201

'battery'

301

'battery'

Integration Service会让每组最后一行返回,按照上面的汇总结果,可以得到如下:

STORE_ID

ITEM

QTY

PRICE

SALES_PER_STORE

101

'battery'

2

2.59

17.34

101

'AAA'

2

2.45

4.90

201

'battery'

4

1.59

8.35

301

'battery'

1

2.45

2.45

默认值(Default Values):

使用默认值来代替分组中的null。中央Integration Service允许包括null的输入的汇总。

例如:如果你定义一个默认值为‘Misc’在物品列,Integration Service会把null用Misc代替。

排序后的输入(Sorted input):使用该种方法可以改善session的性能。使用Sorted input,你必须使数据通过组件的排序和分组的port相应,用升序或者降序。

条件(Conditions)

不要使用排序后的输入,如果以下两种情况任意一个为真:

汇总表达式中使用嵌套函数。

Session使用incremental汇总。

预先排序的数据(Pre-Sorting Data)

数据必须按照如下来排序:

在汇总分类使用的port,输入的数据要与它的顺序一致。

在session的配置中使用同一个顺序。如果数据不是严格按照session的排序的升序或者降序,Integration Service让这个session失败。例如:当你用French排序命令配置session,汇总组件也要用French排序命令。

对于关系和文件源,使用Sorter transformation排序在汇总组件之前。你可以放置这个Sorter transformation到任何地方,只要在连接到汇总组件之前没有其他组件改变他的排列顺序。汇总组件中的分组用的port的顺序必须要和Sorter transformation中出现的顺序一致。

如果session使用关系数据库作为源,你也可以使用Source Qualifier transformation的Number of Sorted Ports来进行排序。

例:使用ITEM_NAME来进行排序,

Sorter transformation排序后的结果如下:

ITEM_NAME

QTY

PRICE

Soup

4

2.95

Soup

1

2.95

Soup

2

3.25

Cereal

1

4.49

Cereal

2

5.25

汇总组件返回如下值:

ITEM_NAME

QTY

PRICE

INCOME_PER_ITEM

Cereal

2

5.25

14.99

Soup

2

3.25

21.25

汇总cache(Aggregate cache):Integration Service会把数据保存在汇总cache中直到汇总计算结束。它把组的值保存在索引cache中、把行数据保存在数据cache中。如果汇总的数据太大,cache中装不下,Integration Service保存多出的数据到cache files。你可以配置索引和数据cache在汇总组件中或者在session的属性中。或者你也可以在Integration Service决定cache大小在运行的时候。注意:在使用的数据是排序后的,Integration Service不使用cache的。

提示(Tips )

使用下列的方法来优化汇总组件的性能。

使用排序后的输入来减少汇总cache的使用。

限制input/output或者output ports的连接数量。

在汇总之前过滤。

汇总组件问题解决(Troubleshooting Aggregator Transformations)

我使用排序后的输入,但是workflow使用的时间和以前一样。

你可能使用排序后的输入,以以下任意一种方式:

汇总表达式包括嵌套汇总函数。

Session使用增量汇总。

源数据是data driven。

一个session使用一个汇总组件造成性能低下。

workflow 期间,Integration Service可能过多的把内存分页拿到硬盘上。你可以使用提高transformation属性中的索引cache和数据cache的大小来提高session的性能。

我输入了一个覆盖的cache路径在汇总组件中,但是Integration Service保存session incremental aggregation files到其他某处。

你可以覆盖transformation cache directory在一个session级别。Integration Service会记录cache directory在session log中。你也可以检查session属性为一个cache directory。


Expression Transformation

Transformation type: Passive 、Connected

使用Expression transformation在一行中计算值,在你写入目标之前。例如,你需要校准员工的工资,连接first和last名字,或者把string转换为number。使用Expression transformation执行任何非汇总的计算。你也可以使用Expression transformation来测试条件语句在你输出结果到目标表或者其他transformations。

计算值:

使用Expression transformation为一行计算,你必须包括以下ports:

被使用在计算的port必须是Input 或者 input/output ports。例如:当为一个定单计算总价格时,等于被订的物品数量乘单价,这个port是input 或者input/output的。一个port是供给给单价的,另一个是供给给订的数量的。

Output port是给表达式的。你为output port输入表达式像配置一个选项一样。返回值需要和表达式的返回值式匹配的。如果想获得更多关于表达式的信息,请查看下节Working with Expressions。

加入多个计算:

在一个Expression transformation中,你可以输入多个表达式。只要为每一个output port输入一个表达式,你可以创建任意多的output port在这个transformation中。用这种方法,比分开建立多个transformations要好。

例如:你可能想从员工薪水中计算一些种类的代扣税,如:本地和联邦的个人所得税,社保和医保。所有的这些计算都需要员工的工资,税种,和/或者相应的税率,你可以建立一个Expression transformation,把工资和税种作为input/output ports,并且建立output port为每个需要的计算。

Working with Expressions (使用表达式)

你可以在一些transformations中使用表达式编辑器来输入表达式。建立表达式可以使用如下的函数:

Transformation language functions。类SQL 函数被设计用来操作普通的表达式。

用户自定义函数是你在PowerCenter中使用transformation language functions建立的。

订制函数是你使用订制函数API建立的。

Using the Expression Editor (使用表达式编辑器)

使用表达式编辑器来建立一个类SQL的语句。虽然你可以用手来建立表达式,但是你应该使用point-and-click方法来建立。选择函数,port,变量,和操作符从point-and-click界面,来减低你建立表达式时的错误率。

Entering Port Names into an Expression (输入一个port名到表达式)

对于一个连接的transformations,如果你使用port名在一个表达式里,Designer会修改表达式,当你在该transformation中修改该port名时。例如:你写了一个有效的表达式用来判断两个日期的不同,Date_Promised 和Date_Delivered。后来,你把Date_Promised port的名字改为Due_Date,Designer也会把表达式中的名字改为Due_Date。

Adding Comments (加注释)

你可以为一个表达式添加注释,来给这个表达式添加描述信息,或者指定一个URL到一个业务文档关于这个表达式的。

你使用以下任意一种方法来加注释:

l 在表达式中使用--或者//来添加注释。

l 单击Comments按钮,在注释对话框中添加。

Validating Expressions (验证表达式)

使用Validate按钮来验证表达式。如果你不验证一个表达式,Designer会在你关闭它的时候来验证。如果表达式不合法的,Designer会发出警告。你可以保存错误的表达式或者改正它。你不能运行一个有错误表达式的mapping在session中。

Expression Editor Display (表达式编辑器的显示)

表达式编辑器可以使用不同的颜色来标记表达式的语法,以便很好的阅读。如果你有最新的Rich Edit,riched20.dll,安装到了系统,表达式显示表达式函数为兰色,注释式灰色,引用的字符串式绿色。

你可以调整编辑器的大小。用拖拽边的方法来扩大对话框。Designer保存这个新的大小像客户机设置一样。

Adding Expressions to an Output Port (添加一个表达式到Output Port)

完成下列步骤来添加一个表达式到一个output port。

1. 在transformation中,选择port并打开表达式编辑器。

2. 输入表达式。

3. 添加注释。

4. 验证表达式。


Filter Transformation

Filter Transformation Overview

Transformation type: Active 、Connected

功能:根据条件过滤到不符合条件的行。

你可以使用SALARY > 30000来过滤掉SALARY小于等于3000的行。

过滤条件:过滤条件就是可以返回真或假的表达式。可以是一表达式,也可以是几个表达式,但表达式之间是与关系。如果你在条件中输入的是SALARY > 30000 和 SALARY < 100000,他们就等于SALARY > 30000 AND SALARY < 100000。

提示:

在mapping中,使用Filter transformation越早越好。

尽量使用Source Qualifier transformation来过滤数据。


Joiner Transformation

1.5 Transformation type:

Active 、Connected

1.6 功能:

你可以使用本组件连接两个不同源的关系表或者file系统。当然你也可以连接来自同一个源的数据(一般使用Source Qualifier Transformation,在下面会介绍使用本组件连接来自同一个源的数据的情况)。本组件一次只能连接两个源,如果有多个源就使用多个该种组件,直到你把所有你想连接的源都连接了为止。影响连接结果的有,连接的条件,连接的类型和输入的源。

图1显示的是一张mapping 的一个 Joiner transformation的master 和 detail pipelines。

图1

1.7 不能使用Joiner transformation的两种情况:

l input pipeline中包括Update Strategy transformation情况下,你不能使用本组件。

l 你不能直接把Sequence Generator transformation连接到本组件。

1.8 如何让一个Joiner Transformation工作:

如果你想让Joiner Transformation工作,你需要以下步骤:

1. 配置组件属性。

2. 配置连接条件。

3. 配置连接条件。

4. 配置session为sorted 或者 unsorted input。

5. 配置transaction scope。

1.9 属性:

图2显示的是Joiner Transformation 的Properties Tab:

图2

表1是Joiner Transformation 的所有属性(Properties):

表1

Option

Description

Case-Sensitive String Comparison

区分大小写。如果选中,Integration Service在执行连接操作的时候对string列会区分大小写。

Cache Directory

指定路径作为master 或者 detail rows以及他们的索引行的cache。默认的,cache files都会建立在$PMCacheDir中保存的目录里。如果你覆盖这个路径请确认这个路径是存在的,并且有足够的硬盘空间来供给给cache files。这个目录可以是个映射或者本地的逻辑分区。(The directory can be a mapped or mounted drive.)

Join Type

指定连接类型: Normal, Master Outer, Detail Outer, 或者 Full Outer。

Null Ordering in Master

Not applicable for this transformation type.

Null Ordering in Detail

Not applicable for this transformation type.

Tracing Level

Session log会记录该组件运行记录的详细程度。选项有: Terse, Normal, Verbose Data, 和 Verbose Initialization.。

Joiner Data Cache Size

组件的数据cache大小。默认为2,000,000 bytes。如果配置的cache大小大于等于2 GB,你必须执行该session在64位机上。你可以配置一个确定的数字,或者由Integration Service在运行时决定大小。如果你设置为Integration Service决定,你也可以设置一个Integration Service可以分配的最大值。

Joiner Index Cache Size

组件的索引cache大小。默认为1,000,000 bytes。如果配置的cache大小大于等于2 GB,你必须执行该session在64位机上。你可以配置一个确定的数字,或者由Integration Service在运行时决定大小。如果你设置为Integration Service决定,你也可以设置一个Integration Service可以分配的最大值。

Sorted Input

指定输入的数据是排序后的。使用排序后的输入可以提高性能。

Transformation Scope

指定Integration Service使用的对数据数据的转换逻辑。你可以选择Transaction, All Input, 或者Row。

1.10 怎样设置master 和 detail以最佳的性能:

在session运行中,Integration Service会使用master源的每一行来和detail源进行比较。为了达到最佳性能,对于无序的输入源,使用行数最少的作为master;对于有序的,使用duplicate key values最少的为master。默认的,Integration Service会把第一个被引入该组件的pipeline设置为detail。你可以在Ports tab 中的ports中的M column来更改。

1.11 定义条件:

你可以基于来自于两个输入源的port建立一个或者多个条件。例如:有两个输入源表EMPLOYEE_AGE和EMPLOYEE_POSITION,它们都包含一个字段employee ID是number型的,你就可以建立如下的连接条件:EMP_ID1 = EMP_ID2

1.12 连接类型:

Joiner transformation和SQL 的join很像,只是它的数据可以来自于不同类型的源。

下面介绍组件提供的几种连接类型:

Normal Join:

Integration Service会去掉所有master 和 detail中不符合条件的数据。

例如:你有两个源叫PARTS_SIZE 和 PARTS_COLOR,并且有如下的数据:

PARTS_SIZE (master source)

PART_ID1

DESCRIPTION

SIZE

1

Seat Cover

Large

2

Ash Tray

Small

3

Floor Mat

Medium

PARTS_COLOR (detail source)

PART_ID2

DESCRIPTION

COLOR

1

Seat Cover

Blue

3

Floor Mat

Black

4

Fuzzy Dice

Yellow

连接条件如下:

PART_ID1 = PART_ID2

结果如下:

PART_ID

DESCRIPTION

SIZE

COLOR

1

Seat Cover

Large

Blue

3

Floor Mat

Medium

Black

下面是等价的语句:

SELECT * FROM PARTS_SIZE, PARTS_COLOR WHERE PARTS_SIZE.PART_ID1 = PARTS_COLOR.PART_ID2

Master Outer Join

保留所有detail的行,并且和master进行匹配。它抛弃不匹配的master行。

以和上面同样的条件会得到如下的结果:

PART_ID

DESCRIPTION

SIZE

COLOR

1

Seat Cover

Large

Blue

3

Floor Mat

Medium

Black

4

Fuzzy Dice

NULL

以上是关于informatica mapplet组件怎么使用的主要内容,如果未能解决你的问题,请参考以下文章

Informatica常用组件使用方法

Informatica转换组件之表达式转换

Informatica转换组件之表达式转换

Informatica_组件

informatica 部分组件介绍

informatica中,lookup组件有哪几类?区别是啥

(c)2006-2024 SYSTEM All Rights Reserved IT常识