根据每个员工数据打印所有员工的总薪水

时间:2016-09-04 12:32:48

标签: datastage

我的输入是

empid salary
10   1000
20   2000
30   3000
40   5000

数据存储9.1中的所需输出是

empid   salary   totalsal
10      1000     11000
20      2000     11000
30      3000     11000
40      5000     11000

我找到的解决方案如下图所示。我的问题是有没有简单的方法来实现这个理想的结果,因为我无法想到任何结果。 感谢您花时间阅读本文

Solution

2 个答案:

答案 0 :(得分:0)

这是典型的fork join示例。您将数据分叉以获取聚合并将其连接回原始数据。这也是在SQL中使用子选择的方式。 另一种选择是带环路的变压器。 你问的是一个简单的方法 - 那么什么是“简单”? 变压器只需要一个阶段而你需要更多,但另一方面,这可能更清晰,因此更容易。

简要说明如何在变压器阶段使用循环来完成此操作。

  1. 使用SaveInputRecord()存储组的数据
  2. 汇总薪水(针对小组)
  3. 当LastRowInGroup()为true时,使用GetSavedInputRecord()检索存储的行
  4. 如果没有分组内容,甚至可以对整个数据进行操作。

答案 1 :(得分:0)

您可以在此处使用转换器(请注意,您正在启用转换器中的顺序访问。否则,其他分区将计算出错误的值)。  因此,现在保留一个阶段变量(让我们说svarTotSal),它将为每个记录加薪。然后,简单地在转换器输出中派生一个TOTAL_SALARY字段,并派生svarTotSal。 会的。

谢谢 苏拉卜