(点击查看大图)图5-22 定义了3个输出的Conditional Split编辑器 最后的条件只是默认输出,名为Sales Quota No Change。通过Lookup方法,如果不应用前两个条件,那默认无变化。这是因为销售配额示例从源中拉出了所有记录,而大部分情况下,没有发生变化。
下列两个缺点会在许多情况下限制使用Lookup。
由于Lookup缓存有实际的内存限制,事实数据量可能不适合私有的Lookup缓存。由于事实表通常较大,这一情况很明显。 这一解决方案并不处理删除。事实处理中删除较少见,因此此限制可能不适合于您的情况。如果Lookup的输入包含与引用表的匹配,那只使用缓存中的查找行。因此,没办法知道Lookup缓存中哪个事实行未使用以及应被删除。
3. 使用Merge Join标识事实变化
在讨论更新和插入处理之前,标识事实变化的另一种方法为Merge Join转换。图5-23显示了相同的ETL过程,销售配置事实只使用了Merge Join将事实源行和事实行相关。
(点击查看大图)图5-23 带有Merge Join的销售配额事实 这个数据流组合使用了Merge Join、Sort和Conditional Split转换。Merge Join要求两个排序的输入,在这里,源行通过Sort转换(按TimeKey和EmployeeKey排序)作为第一个输入发送。第二个输入将事实行带 入Merge Join,只有OLE DB源使用ORDER BY语句作了预排序并配置为预排序。
图5-24显示了配置为全外连接类型的Merge Join编辑器,列出了两个输入中匹配和不匹配的记录。
相关推荐: