Informatica常用组件使用方法


Informatica 常用组件使用方法 www.wnshare.com Page 1 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. Informatica 常用组件使用方法 www.wnshare.com Page 2 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. Informatica 常用组件使用方法 www.wnshare.com Page 3 Lookup 概要描述 获得一个关联的值。例如:源里包含 employee ID,但你还需要 employee name。 用于计算的植。例如:只是汇率或者个人所得税之类的固定数值,不是计算得出来的数据。 Update slowly changing dimension tables。主要是根据条件查出原表,若查出了,就把自己添 加的标志位设为真,否则就设置为假。 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 调用它的表 达式。 用户可以设置默认值。 用户不可以设置默认值。 Informatica 常用组件使用方法 www.wnshare.com Page 4 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  你可以在一个 mapping 中调用这个 Lookup transformation 多次。  下面的步骤描述了 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 表达式中。  步骤 1. 添加 input ports。 2. 添加查询条件。 3. 指定返回值。 4. 从其他的组件中调用该 lookup。  用途 unconnected lookups 多数用于: 1. 在一个表达式测试一个 lookup 的值。 2. 在查询的基础上过滤。 3. 标记行基于查询的结果,例如:updating slowly changing dimension tables。 4. 调用同一个查找多次在一个 mapping 中。 Relational or flat file lookup 当你在建立一个 Lookup transformation 时,你可以选择查询 flat file 或者 relational table。 Informatica 常用组件使用方法 www.wnshare.com Page 5 Relational 你可以通过 SQL 的来 override 默认的 SQL,这样可以你可以加 where 或者查询多个表。 flat file 使用下面选项在使用 flat file 时: 1. 指定源是 indirect files 的。 2. 使用 sorted 输入。 Tips  使用这些技巧在你配置一个 Lookup transformation 的时候:  给被用于查询条件的列加一个索引。  把=号放在条件的第一位。  查询的时候,完全加载小的表。  在数据库中 Join tables 比使用查询要高校的多。  为静态 cache 设置固定的大小。  使用:LKP 来调用 unconnected Lookup transformations。 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 Informatica 常用组件使用方法 www.wnshare.com Page 6 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。默认的, Informatica 常用组件使用方法 www.wnshare.com Page 7 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 或目标中。你可以把插入的行传给目 标表。 Informatica 常用组件使用方法 www.wnshare.com Page 8 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) Informatica 常用组件使用方法 www.wnshare.com Page 9 你可以把一个汇总函数嵌套在另一个汇总函数中。 Transformation 语言包括如下的汇总函数:  AVG  COUNT  FIRST  LAST  MAX  MEDIAN  MIN  PERCENTILE  STDDEV  SUM  VARIANCE 当你使用这些函数的时候,你必须在一个汇总组件的表达式中。 嵌套汇总函数(Nested Aggregate Functions): 你可以在一个汇总组件中的不同的 output port 中包括多个单层的函数(相对 于嵌套函数)和嵌套的函数。但是你不能把他们放到一个汇总组件中。因此, 如果一个汇总组件中的任何一个 output port 中包括一个单层函数,你不可以 使用一个嵌套的函数在任何其他的 port 中在这个汇总组件中。当你在一个汇 总组件中同时包括单层函数和嵌套函数,Designer 会标记 mapping 或者 mapplet 为不正确的。如果你需要同时建立单层函数和嵌套函数,请建立在 不同的汇总组件中。 条件子句(Conditional Clauses): 使用条件子句在汇总组件中,为了减少用在汇总的行数。条件子句可以是任 何可以返回真或假的子句。 例如:你使用如下的表达式来计算出所有 commissions 大于 QUOTA 的员工 总的 commissions: SUM( COMMISSION, COMMISSION > QUOTA ) 非汇总函数(Non-Aggregate Functions) Informatica 常用组件使用方法 www.wnshare.com Page 10 你也可以使用非汇总函数在汇总表达式中。例如下面的表达式: 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 Informatica 常用组件使用方法 www.wnshare.com Page 11 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) 不要使用排序后的输入,如果以下两种情况任意一个为真: Informatica 常用组件使用方法 www.wnshare.com Page 12 汇总表达式中使用嵌套函数。 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 的。 Informatica 常用组件使用方法 www.wnshare.com Page 13 提示(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。 Informatica 常用组件使用方法 www.wnshare.com Page 14 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 (使用表达式编辑器) Informatica 常用组件使用方法 www.wnshare.com Page 15 使用表达式编辑器来建立一个类 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 到一个业务文档关于这个表达式的。 你使用以下任意一种方法来加注释:  在表达式中使用--或者//来添加注释。  单击 Comments 按钮,在注释对话框中添加。 Validating Expressions (验证表达式) 使用 Validate 按钮来验证表达式。如果你不验证一个表达式,Designer 会在你 关闭它的时候来验证。如果表达式不合法的,Designer 会发出警告。你可以保 存错误的表达式或者改正它。你不能运行一个有错误表达式的 mapping 在 session 中。 Expression Editor Display (表达式编辑器的显示) 表达式编辑器可以使用不同的颜色来标记表达式的语法,以便很好的阅读。如果 你有最新的 Rich Edit,riched20.dll,安装到了系统,表达式显示表达式函数 为兰色,注释式灰色,引用的字符串式绿色。 你可以调整编辑器的大小。用拖拽边的方法来扩大对话框。Designer 保存这个 新的大小像客户机设置一样。 Informatica 常用组件使用方法 www.wnshare.com Page 16 Adding Expressions to an Output Port (添加一个表达式到 Output Port) 完成下列步骤来添加一个表达式到一个 output port。 1. 在 transformation 中,选择 port 并打开表达式编辑器。 2. 输入表达式。 3. 添加注释。 4. 验证表达式。 Informatica 常用组件使用方法 www.wnshare.com Page 17 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 来过滤数据。 Informatica 常用组件使用方法 www.wnshare.com Page 18 Joiner Transformation Transformation type: Active 、Connected 功能: 你可以使用本组件连接两个不同源的关系表或者 file 系统。当然你也可以连接来自同一个源 的数据(一般使用 Source Qualifier Transformation,在下面会介绍使用本组件连接来自同一 个源的数据的情况)。本组件一次只能连接两个源,如果有多个源就使用多个该种组件,直 到你把所有你想连接的源都连接了为止。影响连接结果的有,连接的条件,连接的类型和输 入的源。 图 1 显示的是一张 mapping 的一个 Joiner transformation 的 master 和 detail pipelines。 图 1 不能使用 Joiner transformation 的两种情况:  input pipeline 中包括 Update Strategy transformation 情况下,你不能使用本组件。  你不能直接把 Sequence Generator transformation 连接到本组件。 如何让一个 Joiner Transformation 工作: 如果你想让 Joiner Transformation 工作,你需要以下步骤: 1. 配置组件属性。 2. 配置连接条件。 3. 配置连接条件。 4. 配置 session 为 sorted 或者 unsorted input。 5. 配置 transaction scope。 Informatica 常用组件使用方法 www.wnshare.com Page 19 属性: 图 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 可以分配 Informatica 常用组件使用方法 www.wnshare.com Page 20 的最大值。 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。 怎样设置 master 和 detail 以最佳的性能: 在 session 运行中,Integration Service 会使用 master 源的每一行来和 detail 源进行比较。为 了达到最佳性能,对于无序的输入源,使用行数最少的作为 master;对于有序的,使用 duplicate key values 最少的为 master。默认的,Integration Service 会把第一个被引入该组件 的 pipeline 设置为 detail。你可以在 Ports tab 中的 ports 中的 M column 来更改。 定义条件: 你可以基于来自于两个输入源的 port 建立一个或者多个条件。例如:有两个输入源表 EMPLOYEE_AGE 和 EMPLOYEE_POSITION,它们都包含一个字段 employee ID 是 number 型的,你就可以建立如下的连接条件:EMP_ID1 = EMP_ID2 连接类型: 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) Informatica 常用组件使用方法 www.wnshare.com Page 21 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 Yellow 因为没有 size 指定给 Fuzzy Dice,Integration Service 会自动补上一个 NULL。 下面是和本例等价的 SQL 语句: SELECT * FROM PARTS_SIZE RIGHT OUTER JOIN PARTS_COLOR ON (PARTS_SIZE.PART_ID1 = PARTS_COLOR.PART_ID2) Detail Outer Join 保留所有 master 的行,并且和 detail 进行匹配。它抛弃不匹配的 detail 行。 以和上面同样的条件会得到如下的结果: PART_ID DESCRIPTION SIZE COLOR 1 Seat Cover Large Blue 2 Ash Tray Small NULL Informatica 常用组件使用方法 www.wnshare.com Page 22 3 Floor Mat Medium Black 因为没有 color 指定给 Ash Tray,Integration Service 会自动补上一个 NULL。 下面是和本例等价的 SQL 语句: SELECT * FROM PARTS_SIZE LEFT OUTER JOIN PARTS_COLOR ON (PARTS_COLOR.PART_ID2 = PARTS_SIZE.PART_ID1) Full Outer Join 保留所有从来自 master 和 detail 的数据。 以和上面同样的条件会得到如下的结果: PART_ID DESCRIPTION SIZE Color 1 Seat Cover Large Blue 2 Ash Tray Small NULL 3 Floor Mat Medium Black 4 Fuzzy Dice NULL Yellow 和前两个一样,Integration Service 会为没有匹配值的列补上 NULL。 下面是和本例等价的 SQL 语句: SELECT * FROM PARTS_SIZE FULL OUTER JOIN PARTS_COLOR ON (PARTS_SIZE.PART_ID1 = PARTS_COLOR.PART_ID2) 连接从一个源来的数据: 1、连接来自于一个 Pipeline 的两个分支 2、连接来自同一个源的两个实例 Informatica 常用组件使用方法 www.wnshare.com Page 23 3、指导方针 使用如下方针来确定是否使用连接来自于一个 Pipeline 的两个分支,或者连接来自同一个源 的两个实例:  连接来自于一个 Pipeline 的两个分支,当你的源很大或者你只能读源一次的时候。 例如:你只能读从一个消息序列来的源一次。  连接来自于一个 Pipeline 的两个分支,当你使用排序后的数据。  连接来自同一个源的两个实例,当你在一个 pipeline 中 使用一 个 blocking transformation 在源和 Joiner transformation 之间。  连接来自同一个源的两个实例,当使用一个比较慢的时候。  连接来自同一个源的两个实例,当你需要连接未排序的数据。 阻塞源 Pipeline(Blocking the Source Pipelines): 1、Unsorted Joiner Transformation: Integration Service 在执行 unsorted Joiner transformation 时,它会首先读所有的 master,然后在读 detail 的行。在它确认读完所有的 master 行到 cache 之前,它阻塞 detail。 一旦它读完,它不在阻塞 detail。 2、Sorted Joiner Transformation 当 Integration Service 执行一个 sorted Joiner transformation 时候,它基于 mapping 的配置阻塞 数据。阻塞逻辑可能发生在 master 和 detail 来自不同的源。 3、Caching Master Rows 当 Integration Service 执行 Joiner transformation,它并发的读取源,并且基于 master 建立索 引和数据 cache。然后 Integration Service 执行 Joiner transformation 基于 detail 数据和 cache 的数据。 提示: 1、 如果可能在数据库中做连接。 2、 尽量使用排序后的数据来做连接。 3、 对于 unsorted Joiner transformation,指定行数少的作为 master。 4、 对于 sorted Joiner transformation,使用 duplicate key values 最少的为 master。 Informatica 常用组件使用方法 www.wnshare.com Page 24 Router Transformation Transformation type: Active 、Connected 功能:和 filter 组件基本一样,都是过滤到不符合条件的行,只不过是 filter 只有一组条件, 而 router 有一个或者多组条件。就像图 1 显示的,两个 mapping 完成的是同一个功能。 图 1 一个 router 包括输入和输出组,输入和输出 port,组过滤条件和 Designer 中可以修改的属性。 图 2 是一个 router 的例子: 图 2 Router transformation 的组: 包括以下两种: 输入组: Designer 复制输入组的输入 port 的主要特性,为每个输出组建立输出 port。 输出组: 有两种输出组: 用户自定义的组: 一个用户自定义的组由输出 port 和一个组过滤条件组成。你在 Designer 的 Groups Informatica 常用组件使用方法 www.wnshare.com Page 25 tab 建立和删除用户自定义组。你可以为每个你想指定的条件建立一个用户自定义 组。 Integration Service 为输入的每行数据进行条件判断。它会在把该数据送到默认组之 前进行所有所有条件对它判断。Integration Service 决定判断的顺序,基于条件连接 的输出组的顺序。如果一行数据符合多个条件,Integration Service 会把它复制成多 分(当然不算默认组,因为它是没有条件的)。 默认的组: 在你建立一个新的用户自定义输出组以后,Designer 建立默认组。Designer 不允许 你编辑或者删除默认组。这个组没有组过滤条件。如果所有的组条件都为假的时候, Integration Service 把行放到默认组。如果你想让 Integration Service 抛弃所有在默认 组中的行,不把它和组件或者 mapping 目标连接就可以了。 Designer 会在你删除最后一个用户自定义的组之后,删除默认组。 使用组的过滤条件: 你可以检查数据基于一个或者多个组过滤条件。你可以在 Groups tab 的 Expression Editor 建立组条件。你可以使用任何一个返回一个值的表达式。你也可以给条件指 定一个常量。一个组过滤条件会为通过组件的所有的行返回一个真或者假。0 等价 于假,任何非零值都等价于真。Integration Service 会把判断值为真的行数据放到和 每个用户自定义的组关联的组件或者目标。 如何添加一个组: 1. 在 Router 中建立一个组就像在其他的组件中建立一个 port。步骤如下: 2. 点击 Groups tab。 3. 点击 Add button。 4. 在 Group Name section 中输入组的名字。 5. 点击组过滤条件区域,并打开表达式编辑器。 6. 输入组过滤条件。 7. 点击 Validate 检查条件的语法是否正确。 8. 点击 OK。 Port: Router transformation 有输入和输出 port。输入 port 在输入组,输出 port 在输出组。你 可以建立输入 port,从别组件里复制过来,或者用手建立。 图 3 显示的是 Router transformation 的 Ports tab: 图 3 Informatica 常用组件使用方法 www.wnshare.com Page 26 Designer 建立输出 port,使用从输入 port 复制的如下属性: Port name Datatype Precision Scale Default value 当你修改输入 port 之后,输出 port 也会跟着改变。输出 port 的名字是在输入 port 的基 础上加上数字来形成的。 在一个 mapping 中连接一个 Router Transformations : 当你在一张 mapping 中连接一个组件到 Router transformation,应该考虑如下的规则:  你可以一个组连接一个组件或者目标。 你可以把一个输出 port 连接多个组件或者目标。 你可以把一个输出的多个输出 port 连接多个组件或者目标。 你不能把多个组连接到一个单独的输入的组件或者一个目标。 你可以把多个组连接到一个多输入的组件,例如:Joiner transformations。 Informatica 常用组件使用方法 www.wnshare.com Page 27 Informatica 常用组件使用方法 www.wnshare.com Page 28 Sorter Transformation Sorter Transformation 概述 Transformation 类型: Active 、Connected 你可以使用该组件对数据进行排序。 排序的的种类: 升序 降序 排序源的种类: 从关系数据库来的数据 从 flat file 来的数据 提示:你可以在一个 mapping 里建立该组件。你可以指定多个用来排序的 port,并且可以为它们每个都建立一个排序。 Sorting Data(排序的数据) 使用的 port 类型:input/output 在一个组件里出现多个排序 port 时,Integration Service 的处理方法: Integration Service 会先对第一个 port 进行排序,然后在第一排序的基 础上进行排序。下面是一个例子,可以很好的说明该过程。 源数据如下: ORDER_ID ITEM_ID QUANTITY DISCOUNT 45 123456 3 3.04 Informatica 常用组件使用方法 www.wnshare.com Page 29 45 456789 2 12.02 43 000246 6 34.55 41 000468 5 .56 对ORDER_ID 和 ITEM_ID 排序。根据上面的处理过程就会得到如下的结果。 ORDER_ID ITEM_ID QUANTITY DISCOUNT 41 000468 5 .56 43 000246 6 34.55 45 123456 3 3.04 45 456789 2 12.02 属性: Sorter Cache Size(排序的 cache 的大小): Integration Service 使用 Sorter Cache Size 属性来决定在执行该操作的 时候,使用的内存的最大值。 在执行排序操作之前,Integration Service 会把所有的数据加载到该组件 里。你可以自己输入一个数字来配置 Sorter cache 的大小,也可以配置由 Integration Service 来决定运行时的大小。如果你配置 Integration Service 来决 定 cache 的大小,你也可以配置允许 Integration Service 指派的最大的内存大小。 如果的配置的 session 的 cache 的总数为 2GB 或者更大的,你必须运行该 Informatica 常用组件使用方法 www.wnshare.com Page 30 session 在 64 位的 Integration Service 上。 在执行排序操作之前,Integration Service 指定内存的大小,基于 Sorter cache size 的配置。如果 Integration Service 运行一个分割的 session,它为每 个分割的 session 指定 Sorter cache memory 的数量。 如果它不能指定足够的内存,Integration Service 会把 session 设置为 fails。 为了最好的性能,配置 Sorter cache size 小于或等于现有的物理内存的大小。 最小要给该组件指定最少 8 MB (8,388,608 bytes)的内存。Sorter cache size 的 默认值是 8,388,608 bytes。 如果进来的数据比 Sorter cache size 指定数量大,Integration Service 会把 数据保存在 Sorter transformation 的目录。Integration Service 需要至少两倍输 入数据大小的硬盘空间,当储存数据在工作目录里。 使用下面的公式来决定输入数据的大小: number_of_input_rows [( S column_size) + 16] 下表给出了一些列的值的大小,以不同的类型。 Datatype Column Size Binary 精确度 + 8 约等于 8 Date/Time 24 Decimal, high precision off (all precision) 16 Informatica 常用组件使用方法 www.wnshare.com Page 31 Decimal, high precision on (precision <=18) 24 Decimal, high precision on (precision >18, <=28) 32 Decimal, high precision on (precision >28) 16 Decimal, high precision on (negative scale) 16 Double 16 Real 16 Integer 16 Small integer 16 NString, NText, String, Text Unicode mode: 2*(精确度 + 5) ASCII mode: 精确度+ 9 The column sizes include the bytes required for a null indicator. To increase performance for the sort operation, the Integration Service aligns all data for the Sorter transformation memory on an 8-byte boundary. Each Sorter column includes rounding to the nearest multiple of eight. Informatica 常用组件使用方法 www.wnshare.com Page 32 The Integration Service also writes the row size and amount of memory the Sorter transformation uses to the session log when you configure the Sorter transformation tracing level to Normal. For more information about Sorter transformation tracing levels, see Tracing Level. Case Sensitive (大小写敏感度) 该选项会让 Integration Service 考虑排序数据的大小写。当你选中了这个属 性,Integration Service 对数据排序的时,会认为把大写比小写的高。 Work Directory (工作目录) 你必须为 Integration Service 指定一个工作目录来创建临时文件,当它对数 据排序的时候。在 Integration Service 对数据排序后,它删除临时文件。你可以 指定任何一个 Integration Service 所在机器的路径来作为工作目录。默认的, Integration Service 使用过程变量$PMTempDir 的值来指定。当你用一个 Sorter transformation 分开一个 session 时,你可以指定不同的工作目录为每个分割部 分在 pipeline 中。处于增加 session 性能的目的,指定工作目录在 Integration Service 系统中的不同的物理硬盘上。 Distinct Output Rows (输出的行是唯一的) 你可以配置 Sorter transformation 处理输出的行是唯一的。如果你配置该 项,Mapping Designer 会配置所有的 port 作为 sort key 的一部分。当 Integration Service 运行 session 时,它会通过比对抛弃重复的行在排序操作期间。 Informatica 常用组件使用方法 www.wnshare.com Page 33 Tracing Level (追踪级别) 配置 Sorter transformation 的追踪级别,来控制在 Integration Service 向 session log 中写入 Sorter 的错误和状态信息的数量和种类。 在普通追踪级别,Integration Service 通过排序组件的行的数量和组件在排 序操作时候的内存数量。Integration Service 也会记录第一条和最后一条进入组 件的数据的时间和日期。 如果你把级别设置到很详细的级别,Integration Service 会记录通过的所有 数据。Integration Service 也会记录排序组件什么时候释放内存和移走临时文件。 Null Treated Low 你可以配置排序组件使用这种方式来处理 null 值。可以使用该组件,当你想 让 Integration Service 在排序操作时,处理 null 比任何其他值都底。不使用则相 反。 Transformation Scope (转化范围) Transformation Scope 会指定 Integration Service 如何应用转换逻辑到输入 的数据: Transaction 级别:应用转换逻辑到所有在 transaction 中的行。选择 Transaction,当一个数据行以来所有的数据在同一个 transaction 中的,但是不 依赖其他 transactions 的行。 All Input 级别:应用转换逻辑到所有的输入数据。当你选择 All Input, Informatica 常用组件使用方法 www.wnshare.com Page 34 PowerCenter 放弃输入 transaction 的边界。选择 All Input 当一行数据依赖所有 来自源的行。 Informatica 常用组件使用方法 www.wnshare.com Page 35 Source Qualifier Transformation Source Qualifier Transformation Overview(概述) Transformation type: Active、Connected 当你添加一个 relational 或者 flat file 源加入一个 mapping,你需要一个 Source Qualifier transformation 连接它。当运行一个 session 时,Source Qualifier transformation 负责描述 Integration Service 读的行。 使用 Source Qualifier transformation 来完成如下的任务: 连接从同样的源数据库的数据。你可以用主外键关系使用一个 Source Qualifier transformation 连接两个或者更多的表 过滤行当Integration Service读取源数据的时候。如果你包括一个过滤条件,Integration Service 添加一个 WHERE 子句到默认的查询。 指定 outer join 比默认的 inner join 要好。如果你包括一个用户自定义的连接,Integration Service 替代连接信息被指定的 SQL 查询的元数据。 指定 sorted ports。如果你指定一些 sorted ports,Integration Service 添加一个 ORDER BY 到 SQL 查询。 从源中查询唯一的值。如果你选择 Distinct,Integration Service 添加一个 SELECT DISTINCT 语句到默认的 SQL 的查询。 建立一个定制的查询来解决一个特殊的 SELECT 语句来为 Integration Service 读取源数据。 例如,你可以使用定制查询来执行汇总计算。 Transformation Datatypes 不要更改 Source Qualifier transformation 中数据类型。如果源中定义的数据类型和 Source Qualifier transformation 不匹配的话,Designer 在你保存的时候会报错。 Parameters and Variables 使用 mapping parameters 和 variables 在 SQL query, user-defined join, and source filter 在一个 Source Qualifier transformation。你也可以使用系统变量$$$SessStartTime。 Integration Service 首先产生一个 SQL 查询并且用 mapping parameter 或者 variable 他们的 start value 替代,然后在源数据库上执行查询。 当 mapping parameter 或者 variable 是 string 的时候,使用 string identifier 适应源系统。 当 mapping parameter 或者 variable 是 datetime 的时候,需要把数据转换为源数据库的格式。 各数据库的时间格式。 Source Date Format DB2 YYYY-MM-DD-HH24:MI:SS Informix YYYY-MM-DD HH24:MI:SS Microsoft SQL Server MM/DD/YYYY HH24:MI:SS ODBC YYYY-MM-DD HH24:MI:SS Oracle MM/DD/YYYY HH24:MI:SS Sybase MM/DD/YYYY HH24:MI:SS Informatica 常用组件使用方法 www.wnshare.com Page 36 Teradata YYYY-MM-DD HH24:MI:SS 不同数据库,应该使用各个数据库所有的函数来转换格式。 Source Qualifier Transformation Properties(属性) Option Description SQL Query 定义一个定制的查询来代替默认的。 User-Defined Join 指定连接条件。 Source Filter 指定过滤条件。 Number of Sorted Ports 表示要用于排序的列的数量。如果你选择了这项, Integration Service 会为默认的查询语句添加一个 ORDER BY 子句。这个 ORDER BY 子句包括的被指定的 ports 的 数量,是从 transformation 最顶端的 port 开始的。 当选择了,数据库的排序顺序必须和 session 中的排序顺 序匹配。 Tracing Level 设置在 session log 中的细节数量,当你在执行一个 session 中包含这个 transformation。 Select Distinct 指定你是否想 select 唯一的行。Integration Service 包括一 个 SELECT DISTINCT 语句当你选择这个选项。 Pre-SQL Pre-session SQL 是在 Integration Service 读取数据源前的 操作。 Post-SQL Post-session SQL 是在 Integration Service 把数据写入目标 以后对数据库的的操作。 Output is Deterministic Relational source or transformation output that does not change between session runs when the input data is consistent between runs. When you configure this property, the Integration Service does not stage source data for recovery if transformations in the pipeline always produce repeatable data. Relational source 或者 transformation 输出的不变化的在 session 运行期间,输入的数据是固定的在运行期间。当 你配置这个属性,Integration Service Output is Repeatable Relational source or transformation output that is in the same order between session runs when the order of the input data is consistent. When output is deterministic and output is Informatica 常用组件使用方法 www.wnshare.com Page 37 repeatable, the Integration Service does not stage source data for recovery. Default Query(默认查询) 该组件默认的查询语句的生成是依靠,组件中有多少个 port 被其他的组件引用。例如:某 表中只有 CUSTOMERS.CUSTOMER_ID,CUSTOMERS.COMPANY,CUSTOMERS.FIRST_NAME 三列 给引用,所以生成的语句就是如下: SELECT CUSTOMERS.CUSTOMER_ID, CUSTOMERS.COMPANY, CUSTOMERS.FIRST_NAME FROM CUSTOMERS Joining Source Data(连接源数据) 默认的连接,如果表之间有主外键关系的话,会自动的使用该关系进行连接。 如果没有主外键关系,则会根据类型匹配。 Adding an SQL Query(覆盖默认查询) 覆盖默认的查询: 1. 打开 Source Qualifier transformation,点击 Properties tab。 2. 点击 Open button 在 SQL Query 区域。SQL 编辑对话框出现。 3. 点击 Click Generate SQL。Designer 会显示默认的查询语句。 4. 输入查询语句在默认查询语句出现的地方。 5. 选择该查询要查的源属于的 ODBC data source。 6. 输入用户名和密码来连接到这个数据库。 7. 点击 Validate。Designer 执行查询并返回语法是否正确。 8. 点击 OK 返回 Transformations 编辑窗口。再次点击 OK 返回 Designer。 9. 点击 Repository > Save。 Entering a User-Defined Join(输入用户自定义连接) 建立一个用户自定义的连接: 1. 建立 Source Qualifier transformation 从多个源或者联合的源。 2. 打开 Source Qualifier transformation,并且点击 Properties tab。 3. 点击 Open button 在 User Defined Join 区域。SQL 编辑对话框会出现。 4. 输入连接语句。不要输入 WHERE 在 join 的开头。Integration Service 会在运 行的时候加上这个关键字。 5. 点击 OK,返回 Transformations 对话框,然后点击 OK 返回 Designer。 6. 点击 Repository > Save。 Outer Join Support(外连接) 有助于提高性能(因为这样可以减少在内存中流动的数据的行数)。 Integration Service 提供两种外连接:  左外  右外 Informatica 的连接语法: Informatica 常用组件使用方法 www.wnshare.com Page 38 当你在输入连接语法的时候,可以使用 Informatica 或者数据库特有的。但当你使用 Informatica的连接语法的时候,Integration Service会在运行的时候把它转换为数据库特有的。 所以最好总是使用数据库特有的连接语法。 当使用 Informatica 连接语法的时候,使用表名作为列名的前缀。例如,如果你有一个列名 是‘FIRST_NAME’在‘REG_CUSTOMER’表中,你要输入 ‘REG_CUSTOMER.FIRST_NAME’在连接的语法中。当然,在为表名起了别名以后,要 用表的别名。 你能把左外、右外连接和自然连接联合使用在一个 source qualifier 中。使用多个自 然连接和多哥左外连接。 当使用联合连接时,输入他们以如下顺序: 1、自然 2、 左外 3、 右外(有些数据库是不能使用的) 自然连接语法:{ source1 INNER JOIN source2 on join_condition } source1 源表的名字。Integration Service 会根据连接条件从该表返回数据。 source2 源表的名字。Integration Service 会根据连接条件从该表返回数据。 join_condition 连接条件。使用源数据库支持的语法。你可以使用 AND 操作符来联合使用 多个连接条件。 左外连接的语法:{ source1 LEFT OUTER JOIN source2 on join_condition } source1 源表的名字。就左外连接,Integration Service 返回该表的所有行。 source2 源表的名字。Integration Service 返回该表的行,在匹配连接条件的时候。 join_condition 连接条件。使用源数据库支持的语法。你可以使用 AND 操作符来联合使用 多个连接条件。 右外连接的语法:{ source1 RIGHT OUTER JOIN source2 on join_condition } source1 源表的名字。Integration Service 返回该表的行,在匹配连接条件的时候。 source2 源表的名字。就右外连接,Integration Service 返回该表的所有行。 join_condition 连接条件。使用源数据库支持的语法。你可以使用 AND 操作符来联合使用 多个连接条件。 如何输入一个源过滤条件: 1. 在 Mapping Designer 中打开 Source Qualifier transformation。组件编辑器对话框出现。 2. 选择 Properties tabs。 3. 在 Source Filter field 点击打开按钮。 Informatica 常用组件使用方法 www.wnshare.com Page 39 4、在 SQL 编辑对话框输入过滤语句。包括表名和 port 名。不要在条件中出现 WHERE 关键字。也可以出现 mapping 参数和变量。 5、 点击 OK。 Sorted Ports: 何时使用 Sorted Ports: 当 mapping 中有汇总和连接组件的时候,为了性能的考虑,你可能要使用该选项。 怎样使用 Sorted Ports: 1. 在 Mapping Designer 中打开 Source Qualifier transformation,并点击 Properties tab。 2. 点击 Number of Sorted Ports,并输入你想排序的 port 数量。Integration Service 会添 加与配置的数量相同的从 Source Qualifier transformation 的顶部开始算起的 port 到 ORDER BY 子句中。源数据的排序顺序必须与 session 的排序顺序相符。 提示:Sybase 限定 ORDER BY 中的列数最多为 16 行,所以在使用 Sybase 不要使 排序的列超过 16 列。 3.点击 OK。 使用 Distinct: 当你需要 Integration Service 从源中查询的值的唯一的的时候,你可以使用 Select Distinct。 当你选中了 Select Distinct 之后,Designer 会在 SELECT 子句中加入关键字 DISTINCT。 如何配置 Select Distinct: 1. 在 Mapping Designer 中打开 Source Qualifier transformation,并点击 Properties tab。 2. 选择 Select Distinct,然后点击 OK。 如何在 session 中复写 Select Distinct: 1. 在 Workflow Manager 中,打开 Session task,并点击 Mapping tab。 2. 点击 Transformations view,点击源接点下的 Source Qualifier transformation。 3. 在 Properties settings 中设置 Select Distinct,并点击 OK。 使用 pre- 和 post-session SQL 应注意: 使用数据库允许的指令。Integration Service 不允许包括注释,尽管数据库允许。 可以使用 parameters 和 variables。 使用分号(;)来分隔多条语句。 Integration Service 会忽略在/*…*/中的分号。 如果你想在/*...*/以外使用分号,请在分号前使用‘\’。当你使用‘\’时,Integration Service 会忽略它,并不会理会它后面的分隔符。 Informatica 常用组件使用方法 www.wnshare.com Page 40 Designer 不会验证 SQL 是否正确。 常见问题:  我不能执行拖拽和放下操作,例如:连接 port。 请检查 status bar 中查询详细的错误信息。  我不能把源和目标连接到一起。 你不能直接的把源和目标连到一起。你必须在关系源和 flat file 源连接到 Source Qualifier transformation 后,再通过 Source Qualifier transformation 和目标连接。同样 COBOL 源 需要使用 Normalizer transformation。  我不能把多哥源连接到一个目标上。 Designer 不允许多个 Source Qualifier transformations 连接到一个目标(表)上。下面有 两种解决方法: 1. 复用目标表。一旦 target definitions 是可复用的,你可以添加同一个目标到一 张 mapping 中多次。然后把源和目标一个一个的连接。 2. 把源在 Source Qualifier transformation 中连接。  我输入了一个订制的查询语句,但是在执行中却没有工作。 你可以先检查你输入的 SQL 语句是否正确。你也可以在 session log 中获得更多的信息。 最有可能出现的错误就是你没有指定表的拥有者是谁。 你可以把 SQL 语句复制到数据库的查询工具中,执行来看是否正确。 我在源过滤条件中使用了 mapping 变量,session 失败了。 Source Qualifier transformation 中测试 SQL 是否正确。请注意变量或者参数是什么类型的, 尤其是时间类型的,你应该注意它的格式是否和源系统一致。 Informatica 常用组件使用方法 www.wnshare.com Page 41 Union Transformation Transformation type: Active 、Connected 功能:把不同种类或者同种类的源合并到一起。相当于 SQL 语句的 UNION ALL 语句。不 会去除重复的行 Union Transformation 的规则和指导方针:  你可以建立多个输入组,但是只能有一个输出组。  所有的输入和输出组必须有匹配的 port。所有组的精度,数据类型和数值范围必须 匹配。  Union transformation 不会移除重复行。如果想去掉重复的行,你必须添加其他的组 件,如:Router 或者 Filter transformation。  你不能使用 Sequence Generator 或者 Update Strategy transformation 在 Union transformation 之后。  Union transformation 不会产生转换。 Union Transformation 的构成(Union Transformation Components)  Transformation tab:你可以为组件重命名和添加描述。  Properties tab:你可以指定跟踪级别。  Groups tab:你可以建立和删除输入组。Designer 显示你在 Ports tab 建立的组。  Group Ports tab:你可以为输入组建立和删除 port。Designer 显示你在 Ports tab 建 立的 port。 和 Groups 以及 Ports 一起工作 (Working with Groups and Ports) Union Transformation 拥有多个输出组和一个输入组。建立 group 在 Groups tab,建立 port 在 group port tab。 在 Groups tab 你可以建立一个或者多个输入组。Designer 默认建立一个输出组。你不能编辑 和删除这个输出组。 图 1 显示的是 Union transformation 的 Groups tab。 图 1 你可以建立 port 用以下方法,从一个 transformation 复制 port,或者你可以手动建立一个 port。 当你在一个 Group Ports tab 上建立一个 port 的时候,Designer 会在每一个 input group 上建立 Informatica 常用组件使用方法 www.wnshare.com Page 42 一个 input ports,并且在 output group 中建立 output ports。这些 port 会使用和你建立的 port 相同的名字,相同的类型,相同的精度。在 Ports tab 中,会在每个名字的后面加上一个数字 来区分它们,当然只有名字是不一样的,其他的都是一样的。 图 2 显示的是 Union transformation 的 Group Ports tab: 图 2 Ports tab显示你建立的组和port。在 Ports tab,你不能编辑组和port。使用Groups和Group Ports tab 来编辑组和 port。 图三显示的是 Union transformation 的 Ports tab,里边有在图 1 和图 2 中建立的组和 port。 图 3 在 mapping 中使用一个 Union Transformation (Using a Union Transformation in Mappings): Union transformation 是一个 non-blocking 的多输入组的组件。你可以连接输入组从不同的分 支,在一个 pipeline 或者不同 pipeline。 当你添加一个 Union transformation 到 mapping,你必须检查你连接的所有输入组的同一个 port。如果你只连接了一个输入组,但是没有连接一个 port 在另外一个输入组,Integration Service 会输出空值给未连接的 port。 图 4 显示一个拥有一个 Union transformation 的 mapping: Informatica 常用组件使用方法 www.wnshare.com Page 43 图 4 当一个 mapping 的 Union transformation 从一个单一的 transaction generator 接受数据, Integration Service 会扩大转换边界。当该组件从多个组件接受数据的时候,Integration Service 会抛掉所有输入 transaction 的边界,并且输出行在一种 open transaction(outputs rows in an open transaction)。 Informatica 常用组件使用方法 www.wnshare.com Page 44 Update Strategy Transformation Transformation type: Active 、Connected 如何设置 Update Strategy : 使用如下步骤来定义一个修改策略:  加入一个 Update Strategy transformation 到 mapping 的目的是控制怎样处理一个被标记 的行,在 mapping 中是插入,修改,删除,或者抛弃。  当你配置 session 时,怎样对待标记行。你可以标记所有的行为插入,删除,或者修改, 或者你可以选择 data driven 选项,这意味着 Integration Service 按照 Update Strategy transformations 中的编码来执行。  当你在 session 中配置插入,修改和删除选项时,它是对每个目标都起作用的。在 target-by-target basis,你可以允许或者不允许插入和删除,并且你可以选择三种方法来 捕捉修改,基于对 session 的修改策略的设置。 为 Session 设置修改策略: 当你配置一个 session,你有一些选项来处理特定的数据库,包括修改。 为所有行指定操作: 当你配置一个 session 时,你可以为一个数据库选择一个对所有行的操作,使用 Treat Source Rows As 选项。 配置 Treat Source Rows 在属性 tab: Treat Source Rows 的属性如下: Setting Description Insert 插入所有行。如果插入的行干扰数据库中主键或者外键关系, Integration Service 会放弃该行。 Delete 删除所有行。Integration Service 发现在目标表中有该行(基于主 键),Integration Service 删除它。注意:主键关系必须在 repository Informatica 常用组件使用方法 www.wnshare.com Page 45 的目标(表)定义中存在。 Update 修改所有行。对于每行,Integration Service 在目标表中查找匹配 的主键。如果存在,Integration Service 修改该行。在目标定义中, 主键关系存在。 Data Driven Integration Service 按照输入 Update Strategy 和 Custom transformations 的编码,来处理标志为插入,删除,修改,或者抛 弃的行。 如果 mapping 中有一个 Update Strategy transformation,这个 field 回默认的标记为 Data Driven。在一个 mapping 中包含 Update Strategy 或者 Custom transformation,如果你没有选择 Data Driven,Workflow Manager 会报警。当你运行 session,Integration Service 不会按照 Update Strategy 或者 Custom transformation 来 处理标的行。 为个别的目标表指定操作: 一旦你决定了在 session 中怎样处理所有的行,你也需要为单个的目标设置修改策略。在 ession properties 的 Mapping tab 中的 Transformations view 定义修改策略。如下图: 你可以设置如下修改策略选项: Insert.选择该选项。把一行插入目标表。 Delete.选择该选项。从表删除一行。 Update.你可以使用如下的选项: Update as Update.修改已存在的行。 Update as Insert..插入一行作为修改。 Update else Insert.如果存在就修改,否则,插入它。 Informatica 常用组件使用方法 www.wnshare.com Page 46 Truncate table. 在读取数据前,先 truncate 目标表。 Mapping 级: 修改策略表达式: Operation Constant Numeric Value Insert DD_INSERT 0 Update DD_UPDATE 1 Delete DD_DELETE 2 Reject DD_REJECT 3
还剩45页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

ruiguoge

贡献于2011-08-22

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf