Lookup component 类似于Tsql的join子句,
select a.* ,b.* from dbo.tis a left join dbo. tdes b on a.code=b.code
Lookup component的组成分析
- 两个输入,一个是上游数据流的输入 dbo.tis,一个是要查找的数据集 dbo.tdes;
- 两个输出,一个是输出匹配成功的数据,一个是输出匹配不成功的数据。上游数据流的一行数据跟整个查找集进行匹配,如果匹配成功,那么输出匹配成功的数据,否则,输出匹配不成功的数据。
- 比较逻辑,要进行匹配必须进行比较,lookup componet是等值比较,类似于join的on子句,on子句使用 “=” 进行条件判断。
- 比较列,Lookup component需要设置“=”号两端的比较列。
1,Lookup component 有三种cache mode,FullCache,Partial Cache 和No Cache,这三种Cache Mode是针对lookup dataset的,由于上游数据流的每一行都要和lookup dataset的所有行进行匹配,对lookup dataset的访问是非常频繁的,为了提高性能,必须提高对lookup dataset的访问速度。如果内存允许,选择full cache,将lookup dataset的数据驻留在cache中,访问速度是最高的。
2,cache Connection manager是内存链接管理器,数据驻留在cache中。手动输入column,并选择type,length,codepage,index position。index position标识column是否是index column。index用于标识比较列,为1标识columnindex column,用于比较,为0标识该列不是index column,虽然不能用于比较列,但是可以用于replace 输入列。
3,cache Connection manager仅仅是标识内存的schema,但是数据源在哪里?需要使用 cache conversion将数据源中的数据导入到cache中。Codex前面有一个放大镜,标识该列是查找列,用于比较。
4,Lookup component 设置比较列mapping
在Lookup component的Columns选项卡中设置比较列mapping,Code和Codex进行比较,即on子句的比较条件。
如果需要使用查找集来代替上游数据流输入,可以勾选Available Lookup Columns的非查找列(index 列没有放大镜的列),然后在Lookup operations中选择Replace。如果要将lookup columns增加到输出流中,在Lookup operations中选择add as new column。
5,lookup component的输出有两个,匹配成功始终有输出,但是需要配置匹配不成功的输出,如图
Redirect rows to no match output :将没有匹配的行输出到匹配不成功的输出流中。