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. 一个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中。
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。
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或目标中。你可以把插入的行传给目标表。 |
Informatica Powercenter学习笔记的更多相关文章
- informatica powercenter学习笔记(一)
本文转摘:http://blog.itpub.net/22377317/viewspace-677137/ 1 informatica powercenter的下载: 方法一:去年我是在ORACLE ...
- informatica powercenter学习笔记(三)
以前在做DBA时在DB里写过行转列,列转行的CODE.这两天做了一下测试用INFORMATICA来实现行列互换的功能. 列转行的SQL 实现 ENV: RMDB TABLE: SALES STOREN ...
- informatica powercenter学习笔记(LookUp 使用)
LOOKUP TRANSFORMATION的使用点评: LOOKUP基本用法不熟的话请参考下附属信息. 用法感受: 1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值.优点就是用 ...
- informatica powercenter学习笔记(二)
LOOKUP TRANSFORMATION的使用点评: LOOKUP基本用法不熟的话请参考下附属信息. 用法感受: 1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值.优点就是用 ...
- Informatica学习笔记
Informatica学习笔记1:UPDATE AS INSERT 问:要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新,因为源表中有最后修改时间的字段,我让它 和SESSION上次运行 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- iOS-NSDate
一.概念解释 1.什么是NSTimeZone? NSTimeZone:时区是一个地理名字,是为了克服各个地区或者国家之间在时间上的混乱设定的. 1).GMT:0:00格林威治标准时间:UTC +00: ...
- 浅谈java类集框架和数据结构(1)
在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...
- 堆表和%%lockres%%函数
在今天的文章里,我想向你展示下SQL Server里一个未公开的函数,还有你如何用那个函数来找出在哪页记录被存储. %%lockres%% 今天我想向你展示的未公开函数叫做%%lockres%%,它与 ...
- GPUImage滤镜之自然饱和度
自然饱和度”是图像整体的明亮程度,“饱和度”是图像颜色的鲜艳程度. “饱和度”与“色相/饱和度”命令中的“饱和度”选项效果相同,可以增加整个画面的“饱和度”,但如调节到较高数值,图像会产生色彩过饱和从 ...
- SQL Server中中数据行批量插入脚本的存储实现
看到博友SQL Server MVP桦仔的一篇博文“将表里的数据批量生成INSERT语句的存储过程的实现”.我仔细看来博文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数 ...
- 2015年百度之星初赛(1) --- B 找连续数
找连续数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 一个让echarts中国地图包含省市轮廓的技巧
背景知识及应用简介 本文主要介绍一个使用ECharts地图组件的取巧方法,该技巧源于实际需求中遇到的问题,一般没有该需求的话这个技巧也是用不到的.有前端基础和以及对ECharts有了解的人基本可以读懂 ...
- ADO.net中常用的对象介绍
ADO.NET的对象主要包括:DataSet,DataTable,DataColumn,DataRow,和DataRelation. DataSet:这个对象是一个集合对象,它可以包含任意数量的数据表 ...
- [转]在SqlServer 中解析JSON数据
在Sqlserver中可以直接处理Xml格式的数据,但因为项目需要所以要保存JSON格式的数据到Sqlserver中在博客:Consuming JSON Strings in SQL Server ...
- Windows 64位操作系统和32位操作系统在注册表上的有一点不一样
Windows 64位操作系统为提供对32位应用程序的兼容,在“C:\Windows\SysWOW64”目录下保留了很多32位的工具(如CMD.exe是32位的).在Windows 64位操作系统上跑 ...