具有排序输入的聚合器与没有排序输入的区别

时间:2015-07-17 17:47:17

标签: informatica aggregator

我的问题主要是理论问题。当我们在Informatica工作流中使用聚合器而不选择已排序的输入属性时,我假设聚合器转换基于端口对数据进行排序,然后进行聚合。 为了提高此操作的性能,通常建议打开已排序的输入属性,并将分类器转换的输出(使用keys = group by ports)传递给聚合器。 我的问题是:从地图的角度来看,两种情况下的操作数量相似:对数据进行排序,然后对其进行聚合。那么为什么分拣机+聚合器(排序输入)的运行速度比单个聚合器(没有排序的输入)快得多?

1 个答案:

答案 0 :(得分:1)

不正确聚合器转换在聚合之前对数据进行排序。它读取每一行并存储每个组的数据,直到它读取整个源,因为它无法确定每个组的结束位置。只有在读完所有行后,才能执行聚合。因此,它使用更多的数据缓存。

当您使用排序输入选项时,集成服务会假定数据按组排序,并在读取组的所有行后立即执行聚合计算。

使用多个分区配置会话时,使用排序输入的性能改进更为重要。

此外,当您在聚合器中嵌套聚合函数或会话使用增量聚合时,无法使用已排序的输入。也许,这就是聚合器不会自动对数据进行排序的原因。