informatica中lookup组件学习

LOOKUP控件的主要目的是:
从关系型的表、视图或者同义词中根据lookup 条件查询lookupport,返回查询结果,供mapping 中的其他控件使用或者插入到目标表
LOOKUP控件能够完成的任务包括:
得到一个关联的值,例如根据USER_ID 得到USER_NAME

执行一个计算,例如得到计算公式中的一个乘数
更新缓慢变化的维表,可以用LOOKUP 来判断当前记录是否在目标表中已经存在
LOOKUP控件的类型:
Connected:直接从其他控件获得输入信息;可以使用静态或者动态的Cache;只缓冲mapping中用到的port;每条记录可以返回多个column,并且能够插入到动态Cache 中;查询条件无匹配时,返回所有输出port的默认值,如果使用动态Cache,Informatica Server把记录毫无改变的保留在Cache中;支持用户定义的默认值;返回多个输出值到另一个控件中
Unconnected:间接的从其他控件的:LKP表达式的结果来获得输入信息;只能使用静态Cache;缓冲所有的port;每条记录只能返回一列;查询条件无匹配时,返回NULL;不支持用户定义的默认值;将返回值输出到定义:LKP表达式的控件中
Connected LOOKUP控件的处理过程
1.直接从mapping 中的另一个控件获得输出数据
2.对于每一条数据,Informatica Server 根据LOOKUP控件中的条件去查询LOOKUP表或者是Cache
3.如果LOOKUP 控件是Uncached 或者使用的是静态的Cache,InformaticaServer返回查询的结果;如果使用的是动态的Cache,Informatica Server 在Cache中查询从LOOKUP表中查询得到的结果,如果在Cache 中不存在,则将结果插入到Cache中,如果在Cache中存在,则更新这些记录或者不做改变,同时标记这些记录是“插入”、“更新”、“无变化”等类型
4.然后将结果返回到下一个控件
可以将上面的经过经过filter 或者router 控件来得到对于目标表中不存在的记录
Unconnected LOOKUP控件的处理过程
1.相关控件想间接的从其他LOOKUP 控件的:LKP表达式的结果来获得输入信息,例如UPDATE STRATEGY 控件
2.对于每一条数据,Informatica Server 根据LOOKUP控件中的条件去查询LOOKUP表或者是Cache
3.Informatica Server 返回一个值到LOOKUP 控件的return port
4.Informatica Server 返回值到调用:LKP 的控件的表达式中
Unconnected LOOKUP 控件的主要用处是更新缓慢变化的维
LOOKUP控件的组件
LOOKUP 表
需要有源或者是目标中的一个可以访问这个LOOKUP 表;可以是一个单独的表,也可以使用SQL语句覆盖来得到一个包括多个表的查询通过连接到数据来引入LOOKUP 表的定义,可以通过数据库的本地驱动或者是ODBC来进行连接,但是使用数据库本身的本地驱动性能更好一些对于非常大的LOOKUP表,考虑添加索引来提高查询的性能,索引需要包括LOOKUP 条件中的所有的字段对于Cache LOOKUP,将LOOKUP的ORDER BY 子句中的包含在索引中即
可;对于Uncached LOOKUP,要把LOOKUP 条件里面的自动都加入到索引中
LOOKUP端口
I:输入端口
O:输出端口
L:查询端口,在默认的SQL 中出现,LOOKUP 表中的每列都被自动的定义
为L 和O 端口,可删除
R:无连接LOOKUP 中的返回端口
LOOKUP属性
Lookup SQL Override 只能在cache enable的情况下才能用,另外不要输入ORDER BY 子句,即使输入INFORMATICA 也会产生ORDER BY 子句
Lookup CachingEnabled:如果选中,查询一次表,以后的记录都从缓冲中去查询;如果不选,每条记录都从数据库中查询一次
Lookup Policy on Multiple Match:确定在uncached 和static cache的情况下如何处理查询得到的多条记录,可以取得第一条、最后一条或者是报错;在dynamic cached的情况下,如果查询得到多条记录,会报错
Dynamic Lookup Cache:当把经过的记录插入到目标表的同时,插入或者更新cache里面的记录
Insert Else Update:如果选中整个选项并且进入LOOKUP控件的记录类型是INSERT,那么对于不存在的记录进行插入,对于存在的记录进行更新;如果不选中这个选项,只是对那些是INSERT类型的记录在cache 进行寻找,找不到则插入,否则不做其他操作

Update Else Insert:如果选中整个选项并且进入LOOKUP控件的记录类型是UPDATE,那么对于存在的记录进行更新,对于不存在的记录进行插入;如果不选中这个选项,只是对那些是UPDATE类型的记录在cache 进行寻找,找到则更新,否则不做其他操作。
LOOKUP查询
默认产生ORDER BY 子句,并且顺序与SELECT 中的字段的顺序是一致的SYBASE中的ORDER BY 子句最多可以有16 个字段,因此如果LOOKUP 中有超过16 个字段的查询,必须使用多个LOOKUP控件进行查询当在OVERRIDE SQL 中要写WHERE子句时,如果是dynamic,必须在LOOKUP控件前面添加一个FILTER 控件,来确保只有满足条件的记录被插入到cache和目标表中如果没有cache,sql override 无效;在override 中SELECT 的字段必须与L 端口和O端口一致
LOOKUP条件
类似于WHERE 子句;条件中的数据类型必须一致;多个条件之间的关系是“与(AND)”;NULL值是可以匹配的;
如果有多个条件,把带等号的条件放在前面,可以提高性能;对于有多个匹配的情况,可以选择返回的类型:第一个匹配、最后一个匹配、返回错误;INFORMATICA的ORDER BY 是升序排列的dynamica cache 的情况下,因为不能返回多个记录,所以只能使用等号的条件
LOOKUPtips
给LOOKUP 条件中的字段添加索引把带有等号的条件放置在前面把较小的LOOKUP表进行cache在数据库中进行表的关联:如果LOOKUP表和源表在同一个数据里面,而且cache是不可能的,就在数据库里面进行表关联对于静态的LOOKUP表,尽量使用永久性的cache:这样可以在多个session 见复用如果想在EXPRESSION 中使用:LKP来调用查询的结果,引入一个unconnected 的LOOKUP
对于cache 的LOOKUP,重定义ORDER BY 子句:1)generate SQL;2)按照LOOKUP
条件中的字段的顺序添加ORDER BY 语句;3)在ORDER BY 语句后面添加--,作为重定

义的记号,否则出错

文章源地址:http://blog.sina.com.cn/s/blog_62d12053010170ub.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍:          Informatica 9.6 实战课程,将从数据仓库体系架构介绍,服务器搭建配置,实例组件操作,丰富的案例,及项目实战开发过程 来讲述ETL工具Informatica的实际应用,真正完成数据仓库全流程开发应用,ODS层,EDW层,DM层,学完该课程具备ETL软件开发工程师能力水平,能独立完成项目开发工作,从入门到高级项目开发应用,每个实例都载图,课件,教程,数据等,能达到高级ETL开发能力,本课程的学习要求,一定跟着实例动手实战,操作才能掌握实例的开发步骤,及开发注意事项。每个组件都用具体案例讲解,保证学以致用。掌握ETL的开发技能,搭建数据仓库体系架构。应对各环境操作。具体数据实操与应用。 你将收获:ETL软件开发工程师能力与水平数据仓库体系架构案例综合应用实战ETL实战项目开发数据采集与数据处理数据清洗与数据仓库指标统计学会使用Informatica完成项目开发掌握ETL开发流程掌握数据质量管理 适用人群 数据仓库初学者 数据仓库开发工程师 数据库开发工程师 BI开发工程师 数据可视化工程师大数据开发与应用 数据仓库管理 数据管理 数据分析师 业务数据分析 零基础入门ETL ETL大数据处理 数据仓库体系架构图: 课程大纲:01_Informatica9.6课程导学02_数据仓库体系介绍03_Oracle_安装04_Oracle_配置.wmv05_PLSQL工具汉化破解06_Informatica9.6安装.wmv07_Informatica9.6服务器配置.wmv08_客户端的安装配置连接.wmv09_客户端工具介绍10_源数据介绍11_入门实例EMP_0112_入门实例EMP_0213_入门实例DEPT表14_表达式Fx组件实例115_表达式Fx组件实例216_聚合组件实例17_查找Lookup组件实例18_过滤Filter组件实例19_Informatica9.6 排序sort组件实例详解20_Informatica9.6 分发器Router组件实例21_Informatica9.6 sql连接查询复习22_Informatica9.6 连接查询同构SQ23_Informatica9.6 连接查询异构JOIN24_Informatica9.6 等级函数Rank实例25_Informatica9.6 数据合并Union组件实例26_Informatica9.6 存储过程Px组件实例27_1行转列案例sql28_2行转列案例ETL过程29_工资大于该职位下平均工资案例30_增量抽取案例31_缓慢变化维案例32_对文件数据的读取写入33_项目1薪酬统计项目介绍34_Informatica 项目1薪酬统计项目接口入库ODS35_Informatica 项目1薪酬统计项目EDW层明细表临时表1sql36_Informatica 项目1薪酬统计项目EDW层明细表临时表2ETL37_Informatica 项目1薪酬统计EDW层明细表138_Informatica 项目1薪酬统计EDW层明细表239_Informatica 项目1薪酬统计EDW层明细表340_Informatica 项目1薪酬统计DM层月考勤统计报表41_Informatica 项目1开发DM层统计报表142_Informatica 项目1开发DM层统计报表243_Informatica 项目1开发DM层统计报表344_Informatica 项目1开发DM层薪资报表145_Informatica 项目1开发DM层薪资报表246_Informatica 项目1开发DM层薪资报表347_Informatica 项目2计费系统项目介绍48_Informatica 项目2计算系统项目ODS层49_Informatica 项目2计费系统EDW层150_Informatica 项目2计费系统EDW层251_Informatica 项目2计费系统EDW层352_Informatica 项目2计费系统DM层 
Informatica lookup组件可以通过变量来获取值。 在Informatica PowerCenter,可以使用参数变量(Parameter Variable)来存储和传递值。这些参数变量可以在Mapping或Session级别定义,并在整个工作流使用。 要在lookup组件获取变量值,可以按照以下步骤操作: 1. 在Mapping或Session Properties窗口,创建一个参数变量。可以给变量指定一个名称,并选择适当的数据类型和默认值。 2. 在Mapping或Sessionlookup组件,打开编辑对话框。在"Source"选项卡下,选择"Variable Port"。 3. 在Variable Port对话框,选择要从参数变量获取值的端口。对于查找查询的输入端口和条件端口,可以选择一个或多个端口。 4. 在Variable Port对话框,选择"Variable/Port"列对应端口的"Variable"选项。然后,选择参数变量下拉菜单的特定变量。 5. 完成后,点击"确定"按钮保存更改。 通过以上步骤,lookup组件就可以获取参数变量存储的值,并在查找查询使用。这样,可以根据变量的值来动态调整lookup组件的行为,提高数据转换和处理的灵活性和可重用性。 在工作流执行过程,可以通过修改参数变量的值来改变lookup组件的行为。这样,在相同的Mapping或Session可以多次使用lookup组件,每次使用时都可以根据不同的变量值来决定查询条件或输入值,以满足不同的业务需求。 这就是如何在Informatica lookup组件获取变量值的方法。通过使用参数变量,可以灵活地控制lookup组件的行为,提高数据处理的灵活性和可配置性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值