转换类型:已连接、主动
聚合转换允许您执行聚合计算,比如平均值和总和。聚合转换与表达式转换不同,您可以使用聚合转换对多组执行计算。而表达式转换只允许您逐行地执行计算。
使用转换语言来创建聚合转换时,您可以使用条件子句过滤行,这比 SQL 语言更为灵活。
PowerCenter 执行其读取的聚合计算并存储聚合高速缓存中必需的数据组和行数据。
创建包含聚合转换的会话后,您可启用会话选项和增量聚合。当 PowerCenter Server 执行增量聚合时,它会通过映射传递新的源数据并使用历史高速缓存数据以增量执行新的计算。
设计器只允许聚合表达式出现在聚合转换中。聚合表达式可以包括条件子句和非聚合函数。还可以包括一个嵌入另一聚合函数的聚合函数,例如:
MAX( COUNT( ITEM ))
聚合表达式的结果因转换中使用的分组依据端口而异。例如,当 PowerCenter 计算以下不带已定义分组依据端口的聚合表达式时,它将会查找已售出项目的总量:
SUM( QUANTITY )
但是,如果您使用同一表达式并按 ITEM 端口分组,PowerCenter 将按项目返回已售出项目的总量。
您可以在任意输出端口创建聚合表达式并使用转换中的多个聚合端口。
聚合函数
可以使用聚合转换中的以下聚合函数。也可以将一个聚合函数嵌入另一个聚合函数。
- AVG
- COUNT
- FIRST
- LAST
- MAX
- MEDIAN
- MIN
- PERCENTILE
- STDDEV
- SUM
- VARIANCE
当您使用这些函数中的任意一个时,必须要在聚合转换的表达式中使用。
嵌套聚合函数
可以在聚合转换的不同输出端口中纳入多个单级别或多个嵌套函数。但是,您不能在聚合转换中同时纳入单级别和嵌套函数。因此,如果聚合转换在任意输出端口中包含单级别函数,您将无法在此转换的其它任意端口使用嵌套函数。当您在同一聚合转换中包含单级别和嵌套函数时,设计器将标记映射或映射组件为无效。如果您需要创建单级别函数和嵌套函数,请分别建立聚合转换。
条件子句
可以在聚合表达式中使用条件子句以减少在聚合中使用的行数。条件子句可以是任意求值为 TRUE 或 FALSE 的子句。
例如,可以使用以下表达式计算超过其季度限额的员工的总佣金:
SUM( COMMISSION, COMMISSION > QUOTA )
非聚合函数
可以在聚合表达式中使用非聚合函数。
以下表达式返回每个项目的最高已售出项目数(按项目分组)。如果未售出项目,表达式返回 0。
IIF( MAX( QUANTITY ) > 0, MAX( QUANTITY ), 0))
聚合函数中的空值
配置 PowerCenter 时,您可以选择希望 PowerCenter 处理聚合函数中空值的方式。您可以选择在聚合函数中将空值视为 NULL 或零。默认情况下,PowerCenter Server 在聚合函数中将空值视为 NULL