PowerCenter——Aggregator组件

一周新的开始~

整理笔记~

To be more better~

 

正文

Aggregator组件,功能是起到聚合作用的一个组件。

这是一个很常用的组件,在日常会在这里经常用到诸如:SUM,AVG,MAX等聚合运算。

 

Mapping

源 -> SQ -> Aggregator -> Target

 

对于功能并不难理解,大致实现的功能可以用如下SQL来表述:

    SELECT NAME,SUM(SALES)

    FROM T_EMP

    GROUP BY NAME

 

实现

实现Mapping,双击Aggregator组件,进入Edit Transformation界面。

在Ports选项界面,可以看到有个可以勾选GroupBy的地方,这边可以勾选你想要聚合的内容,例如上面的NAME。

建立一个数据端口SUM_SALES,设置其表达式为SUM(SALES)。

在Edit Transformation界面中的Aggregator Properties Tab界面中只需要关注一个Sorted Input。

当使用Sorted Input属性时,实现的功能逻辑类似于Joiner与Lookup,就是在Aggregator前面加了一个Sorter的组件。

这保证了Aggregator中的数据是有序的。

 

使用了Sorted Input属性,实现的Mapping类似于:

源 -> SQ -> SORTER -> AGGREGATOR -> TARGET

 

在Sorter组件中,选择的排序列必须与Aggregator中的GroupBy列一致或者包含,并在Aggregator组件的Properties Tab中选中Sorted Input属性。在Aggregator中使用Sorted Input会提升性能,但是也会消耗一定的资源。

 

 

条件聚合

Aggregator组件中与SQL中的SUM...GROUP BY有区别的。

Aggregator可以实现根据指定的条件下进行的汇总。

类似表达式可以表述为:SUM(SAL,SAL > 900)

 

使用Aggregator组件来进行行列转换

场景:一家企业,薪资组成包括基本工资,绩效工资,津贴,岗位工资4个类型。

应用系统DBA:

CREATE TABLE T_SAL

(

EMPNO    NUMBER(4),

INCOME_TYPE    NUMBER(4),

INCOME_AMOUNT    NUMBER(7,2)

)

 

数据仓库DBA:

CREATE TABLE T_SAL_DW

(

EMPNO    NUMBER(4),

BASE_SAL    NUMBER(7,2),

PERFORMANCE_SAL    NUMBER(7,2),

LEVEL_SAL    NUMBER(7,2),

OTHER_SAL    NUMBER(7,2)

)

 

设计编码表:

11 : 基本工资

22 : 绩效工资

33 : 岗位工资

44 : 津贴

 

设计的Mapping跟常规的一致:

源 -> SQ -> AGGREGATOR -> TARGET

 

区别在于,双击Aggregator组件,打开Ports Tab,在GroupBy字段,选择EMPNO。

工资的4个字段分别使用了如下表达式:

BASE_SAL    SUM(INCOME_AMOUNT,INCOME_TYPE = 11)

PERFORMANCE_SAL    SUM(INCOME_AMOUNT,INCOME_TYPE = 22)

LEVEL_SAL    SUM(INCOME_AMOUNT,INCOME_TYPE = 33)

OTHER_SAL    SUM(INCOME_AMOUNT,INCOME_TYPE = 44)

 

结果可以直接通过SQL语句查看即可:

SELECT * FROM T_SAL_DW

这是一个简单运用Aggregator组件行列转换的例子。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值