0

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

4

1 回答 1

1

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

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

当您为会话配置了多个分区时,使用排序输入的性能改进更为显着。

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

于 2015-07-17T18:50:09.023 回答