informatica性能问题总结之join组件和lookup组件

tech2023-09-11  95

一、join组件和lookup组件的区别与联系:

1、区别与联系:join 和lookup 在做表之间关联时,差不多功能。       若数据量不大,使用join组件效率会高一点,因为join是并行的,lookup是一条一条查,过程比较慢。       若数据量很大,建议用lookup,因为join要把表先加载到etl服务器,数据量过大容易造成服务器压力,并且若要查的数在最后面,或者是没有,很浪费时间。但是在关联条件的地方,lookup相比于join ,除了=,还可以选>,<之类的 2、join组件: join组件的master和详细信息的选择上,若是内关联,谁作为master都可以,a left join b 会保留a表的数据,丢弃b表中与a表不匹配的数据,在join组件选择连接时,若a表为master,join组件的关联要选择详细外部连接,详细外部连接会保留主源的所有数据和详细源的匹配行 3、lookup组件:       a表使用lookup组件去关联b表,关联字段为id,在id向后一个组件拖拽的过程中,id出自b表,则流入后面组件的数据为a、b表匹配的数据,不匹配的自动丢弃,若id出自a表,则流出的数据是a表的所有数据,若a、b表是内关联,则需要做筛选,筛掉b表为空的数据,通常选择b表中的主键或者不为空的字段,进行不为空判断。       lookup组件的缓存,若数据量不大,使用会提高效率 ,数据量很大时,要都加载到etl服务器会使得压力过大,故小表可使用,大表不建议 4、增量抽取:对于没有主键的表做增量抽取时,需要对目标表做lookup(此处不要勾缓存,缓存会把数据都加载过来,如果数据量过大,内存不够会报错,同时运行也慢,查询目标表有没有数据,没有就插入,此处不能做更新操作(session 属性那个地方不能选update,选inster即可),需要注意的是要做筛选,把目标表为空的那条数筛出来,做插入操作;       另一种情况是如果没有设置主键的表,某一字段或几个字段不为空,且能确定一条数,那么可以在导入的目标表处,设置逻辑主键,从而做更新插入操作

最新回复(0)