INFORMATICA POWERCENTER 学习笔记(二)

  LOOKUP TRANSFORMATION的使用点评:

LOOKUP基本用法不熟的话请参考下附属信息。

用法感受:

1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值。优点就是用ETL工具可以设置CACHE,大量的 数据也可以实现这个功能。数据量大的话要设置CACHE ENABLE并调高CACHE SIZE的值。

2 LOOKUP 有CONNECTED 和UNCONNECTED的两种,根据需要而用,如果很多字段要取对应的这个值的话,就用UNCONNECTED.在具体项目中要小心LOOKUP来处理维度列的情况,我目前项目中就发现,在LOOKUP中根据几列来取出主键,结果数据并不完全能唯一区别,最后要做数据清理或引入代理键。

3 关于缓慢变化维处理,用LOOKUP加UPDATESTRATERY组件就可实现缓慢变化维的更新或插入,这是数据仓库项目中处理缓慢变化维比较经典的用法,我认为。

  顺带粘贴些关于LOOKUP的参考信息,了解的,请忽略以下信息,呵呵:

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调用它的表达式。


用户可以设置默认值。


用户不可以设置默认值。

Connected

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

  1. 1.         一个connected Lookup transformation通过pipeline从其他的transformation获得输入值。
  2. 2.         为每个输入行,Integration Service会通过lookup ports 和 condition从源或者缓存中查询。
  3. 3.         如果组件没有使用缓存或者使用的静态缓存,Integration Service会使用lookup query来返回值。
  4. 4.         如果组件使用的动态缓存,当Integration Service在缓存找不到这行,它会把这行插入到缓存中。当Integration Service找到这行,它会修改这行在缓存中或者什么都不做。它标记这行是插入、修改或者是不做变动。
  5. 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. 1.         在一个表达式测试一个lookup的值。
  2. 2.         在查询的基础上过滤。
  3. 3.         标记行基于查询的结果,例如:updating slowly changing dimension tables。
  4. 4.         调用同一个查找多次在一个mapping中。

Relational or flat file lookup

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

Relational

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

flat file

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

  1. 1.         指定源是indirect files的。
  2. 2.         使用sorted输入。

Tips

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

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

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

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

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

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

l         使用: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 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或目标中。你可以把插入的行传给目标表。

时间: 2024-10-05 11:35:42

INFORMATICA POWERCENTER 学习笔记(二)的相关文章

informatica powercenter学习笔记(一)

本文转摘:http://blog.itpub.net/22377317/viewspace-677137/ 1 informatica powercenter的下载: 方法一:去年我是在ORACLE 官方网站下载的INFORMATICA 8.6版本,但是今天在发帖时我特意检查了下, ORACLE 官方网站现在已经没有了,因为ORACLE在忙着推自己出的类似产品,呵呵.ORACLE 的BI据说下载后里面有不过文件太大,没去测试,各位可以去试下, http://www.oracle.com/tech

informatica powercenter学习笔记(三)

以前在做DBA时在DB里写过行转列,列转行的CODE.这两天做了一下测试用INFORMATICA来实现行列互换的功能. 列转行的SQL 实现 ENV: RMDB TABLE: SALES STORENAME QUARTER1  QUARTER2 QUARTER3 QUARTER4 STORE1                   100                  300                  500                  700 STORE2           

Informatica Powercenter学习笔记

LOOKUP TRANSFORMATION的使用点评: LOOKUP基本用法不熟的话请参考下附属信息. 用法感受: 1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值.优点就是用ETL工具可以设置CACHE,大量的 数据也可以实现这个功能.数据量大的话要设置CACHE ENABLE并调高CACHE SIZE的值. 2 LOOKUP 有CONNECTED 和UNCONNECTED的两种,根据需要而用,如果很多字段要取对应的这个值的话,就用UNCONNECTED.在具体项目中要

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t