informatical lookup的使用详解_oracle

Lookup在ETL中是一种常见的操作,比如产品键到代理键的转换,ID到name的转换等,都可以通过lookup来实现。Informatica中的lookup transformation组件除了能实现这种普通的转换,还可以用来更新缓慢变化维等,功能可谓强大。本文根据Informatcia8.1的联机文档,简单介绍一下informatica的lookup transformation。
中英文名词对应:
•transformation:转换
•connected:连接的
•unconnected:未连接的
•cache:缓存

一、lookup的功能
•获得相关值:例如根据ID查找name
•执行计算:例如得到计算公式得到一个结果
•更新缓慢变化维:根据lookup的条件决定是插入还是更新记录等

二、rational lookups vs flat file lookups
lookup的源可以是关系数据库中的表,也可以是平文件。对于关系表,可以从source或者target中选择,也可以和平文件一样,通过import向导完成。

三、connected lookups vs unconnected lookups
informatica的转换可以分为连接的和非连接的两种。
所谓连接的转换,就是该转换是处于整个ETL的数据流中的,其输入ort是直接从另外一个转换,而非连接的,则独立于主数据流之外,通过其他转换中的表达式得到输入数据。
连接的lookup转换将处理数据流中的每一条数据,对于不符合lookup条件的,则输出预先指定的默认值,并且可以更新动态缓存。输出值是所有的output/lookup port。可以使用静态或者动态的缓存。
未连接的lookup转换只处理符合lookup条件的数据,并且只返回一个值。对于不符合条件的,输出NULL。未连接的lookup转换可以被多次调用。输出值在唯一的return port。只能使用静态缓存。

四、cache
informatica对于lookup使用了cache机制。服务器对于cache的处理流程大致如下:
开始处理第一条数据的时候,服务器会在内存中建立缓存,缓存的大小有lookup转换的一些属性决定。对于lookup条件,建立一个index cache,而对于输出值,则放在data cache中。
如果内存缓存大小不够,则会将溢出的缓存放到文件中。会话结束后,缓存会被清除,除非lookup缓存被设置为永久性的。
对于静态的cache,是不允许lookup转换对其进行更新的。而动态的cache,在lookup中如果发现不符合条件的值,可以对cache进行插入或者更新处理。
当然也可以选择不使用任何cache。

五、lookup transmation组件
lookup共有5个组件,也就是在lookup转换上点右键,选编辑后看到的5个标签页。实际上,基本上informatica所有的transformation都差不多是5个组件。
其中第一个transformation页签,第二个ports页签和第五个metadata extensions页签基本都差不多。只是lookup的port除了通常的I(input),O(output)外,还有L(lookup),R(return)。其中return port只能有一个,并且不能和其他转换直接连接,只能通过LKP:表达式获得。
第四个condition页签指定lookup的条件,实际上就是设置两个表的关联条件。
第三个properties是最重要的,可以在这里重写SQL来自定义lookup,设置符合条件返回多条记录时的处理方式,设置是否使用动态cache,以及cache的大小等等。

六、lookup tips
•在lookup条件列上创建index
•尽量使用=条件。如果有多个条件,尽量将=条件放到最前面
•对于小表,尽量使用cache,并且设置cache大小,使得整个table可以cache到内存中
•如果lookup的表和源表在同一个数据库中,并且cache不够大,那么尽量使用join而不是lookup
•对于静态的lookup,尽量使用永久cache(persistent cache),这样多个session可以重用。

时间: 2024-10-09 03:21:28

informatical lookup的使用详解_oracle的相关文章

Oracle触发器用法实例详解_oracle

本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需要说明一下,触发器可以分为语句级触发器和行级触发器.详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发.而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次. 具体举例: 1.

Oracle数据操作和控制语言详解_oracle

正在看的ORACLE教程是:Oracle数据操作和控制语言详解.SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL.其中用于定义数据的结构,比如 创建.修改或者删除数据库:DCL用于定义数据库用户的权限:在这篇文章中我将详细讲述这两种语言在Oracle中的使用方法.  DML语言 DML是SQL的一个子集,主要用于修改数据,下表列出了ORACLE支持的DML语句. 插入数据 INSERT语句常常用于向表中插入行,行中可以有特殊数据字段,或者可

Oracle误删除表数据后的数据恢复详解_oracle

Oracle误删除表数据后的恢复详解   测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2   1. undo_retention参数的查询与修改 使用show parameter undo命令查看当前的数据库参数undo_retention设置. 显示如下: SQL> show parameter undo NAME                                 TYPE        V

Oracle例外用法实例详解_oracle

本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处理常见的oracle错误. 2).非预定义例外用于处理预定义例外不能处理的例外. 3).自定义例外用于处理与oracle错误无关的其它情况. 下面通过一个小案例演示如果不处理例外看会出现什么情况? 编写一个存储过程,可接收雇员的编号,并显示该雇员的姓名. sql代码如下: SET SERVEROUTPUT ON; DECLAR

Oracle数据库中的基本建库操作详解_oracle

图形建库: 1. 确定是否存在要建的库    查看 $ORACLE_BASE/admin/和$ORACLE_BASE/oradata 2. 运行dbca 3. 选择新建库--General Purpose(通用库)模版--Global Database Name:库名.域名,可以只使用 库名--SID区分大小写------数据路径选择,模版默认的是$ORACLE_BASE/oradata/dababase--备份数据的路径--内存分配(SGA专用内存,事务处理为主:PGA系统内存,数据为主)|S

OraclePL/SQL单行函数和组函数详解_oracle

正在看的ORACLE教程是:OraclePL/SQL单行函数和组函数详解. 1 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:  2  3 单行函数  4  5 组函数   6  7 本文将讨论如何利用单行函数以及使用规则.  8  9 SQL中的单行函数 10 11 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称

Oracle排名函数(Rank)实例详解_oracle

--已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:dense_rank,rank ·查询原始数据:学号,姓名,科目名,成绩 select * from t_score S_ID S_NAME SUB_NAME SCORE 1 张三 语文 80.00 2 李四 数学 80.00 1 张三 数学 0.00 2 李四 语文 50.00 3 张三丰 语文 10.00 3 张三丰 数学 3 张三丰 体育 120.00 4 杨过 JAVA 9

Oracle阻塞(blockingblocked)实例详解_oracle

一.概述: 阻塞是DBA经常碰到的情形,尤其是不良的应用程序设计所造成的阻塞将导致数据库性能的严重下降,直至数据库崩溃.对DBA而言,有必要知道如何定位到当前系统有哪些阻塞,到底谁是阻塞者,谁是被阻塞者.本文对此给出了描述并做了相关演示. 二.演示阻塞: --更新表,注,提示符scott@CNMMBO表明用户为scott的session,用户名不同,session不同. scott@CNMMBO> update emp set sal=sal*1.1 where empno=7788; 1 ro

Linux 自动备份oracle数据库详解_oracle

Linux 自动备份oracle数据: 曾经有个同事,来回操作开发和生产的数据库,结果误删了生产的数据库,那种心情我想不是一般人能理解的,虽然说oracle可以有方法还原,但并不是彻底的. 所以,在工作中,不管是开发还是维护,备份数据库是非常有必要. 简单实用的晚间自动备份数据库小案例 步骤一.创建备份脚本,暂且命名为orabak.sh #路径名,指定备份的路径 FILEPATH = /oracle/orabak #根据指定日期格式,定义备份数据库文件名 FILENAME = `date + %