可以使用排序输入选项改善聚合转换性能。使用排序输入时,PowerCenter 会假定所有数据已按组排序。PowerCenter 读取某组的行时,它将执行聚合计算。需要时,它会将组信息存储在存储器中。要使用排序输入选项,您必须将已排序数据传递至聚合转换。配置具有多个分区的会话时,您可以通过已排序端口增进性能。
不使用排序输入时,PowerCenter 会执行其读取的聚合计算。但是,由于未排序数据,PowerCenter 将为每组存储数据直到它读取整个源,从而确保所有聚合计算准确。
例如,聚合转换具有带选定已排序输入选项的 STORE_ID 和 ITEM 分组依据端口。通过聚合传递以下数据时,一旦 PowerCenter 找到新的组 201/battery,就会在 101/battery 为三行执行聚合:
如果您使用排序输入而未正确预排序数据,将会收到意外结果。
排序输入条件
如果以下任意条件为真,则不要使用排序输入:
- 聚合表达式使用嵌套聚合函数。
- 会话使用增量聚合。
预排序数据
要使用排序输入,应通过聚合传递已排序数据。
必须如下排序数据:
- 聚合分组依据端口的顺序,按照它们在聚合转换中出现的顺序。
- 使用与会话配置的顺序一致的顺序。如果数据不是基于会话排序的严格升序或降序,PowerCenter 将终止会话。 例如,如果您配置会话使用法语排序,则必须使用法语排序排列传递至聚合转换中的数据。
对于关系或文件源,您可以在向聚合转换传递数据前使用排序器转换排序映射中的数据。如果没有转换更改已排序数据的顺序,那么您可以在聚合前将排序器转换放置在映射中的任意位置。聚合转换中的按列分组顺序必须与其在排序器转换中出现时的顺序一致。
如果会话使用关系源,您还可以使用源限定符转换中的已排序端口数选项排序源数据库中的分组依据列。分组依据列在聚合和源限定符转换中必须为同一顺序。
时间: 2024-11-08 20:07:35