如何在IICS中实现员工记录关联全体平均薪资?聚合器组合方案
问题
需设计一个映射,在每个员工记录中展示全体员工的平均薪资,请问如何通过IICS实现?
预期输出:
EMP_ID | EMP_NAME | SALARY | AVG_SALARY 101 | Michael | 1800 | 1800 102 | Ronald | 1800 | 1500 103 | Christoph | 2000 | 1800 104 | Jennifer | 2500 | 2000 105 | John | 1800 | 1500
注:IICS/Power Center中的聚合器函数仅返回单个值,需结合聚合器转换与其他转换实现该需求。
解决方案
可以通过聚合器转换 + **连接转换(Joiner Transformation)**的组合实现,具体步骤如下:
- 源数据接入:将员工数据源(如数据库表、文件)接入映射,作为主数据流。
- 计算全体平均薪资:
- 从主数据流分支引出一条子数据流,接入聚合器转换。
- 在聚合器中,不设置任何分组条件(确保计算全体员工的平均薪资),使用
AVG(SALARY)函数计算出全体员工的平均薪资,输出字段命名为AVG_SALARY。此时聚合器只会输出1条记录,仅包含AVG_SALARY字段。
- 关联主数据与平均薪资:
- 将主数据流(包含所有员工的完整记录)和聚合器输出的单条平均薪资记录接入连接转换。
- 连接类型选择笛卡尔积(Cross Join),因为需要把单条平均薪资记录与每一条员工记录进行关联,让每个员工记录都带上这个全局平均值。如果IICS中没有直接的笛卡尔积选项,可以设置一个恒成立的连接条件(比如
1=1)来模拟该效果。
- 输出结果:连接转换的输出即可得到每条员工记录都携带全体平均薪资的数据集,直接接入目标(如数据库表、文件)即可。
如果需要按特定维度分组计算平均薪资(比如示例中部分员工的AVG_SALARY不同,可能是按部门分组),只需在聚合器转换中设置对应的分组字段(如DEPT_ID),再用该分组字段作为连接条件与主数据流关联即可。
内容的提问来源于stack exchange,提问作者Aayushi
相关产品推荐
相关产品推荐

