将当前值与datastage中的先前值进行比较

时间:2016-06-06 16:45:16

标签: datastage

我输入如下

empid薪水 10 1000 2000年20号 30 3000 40 4000

我在顺序fie中需要的输出如下所示。流行的应该有前一行的薪水

empid工资盛行 10 1000 null 20 2000 1000 30 3000 2000 40 4000 3000

我尝试使用变换器,将stage变量作为prevsal = inputlink.salary,然后定义输出列inputlink.salary = prevsal。我知道这在逻辑上是行不通的,是的,它没有用。任何人都可以找到我的解决方案。

2 个答案:

答案 0 :(得分:1)

你是正确的方式 - 变换器和阶段变量是要走的路。 请记住,在变压器中,数据是自上而下处理的。这意味着首先处理第一个(最顶层)阶段变量,然后处理第二个阶段,依此类推,最后将数据放在输出链接上。

输入column:inputlink.salary 假设两个阶段变量:svPrevSalary(最顶层) 和第二个svCurrentSalary

在舞台变量部分尝试以下辅助:

1. svCurrentSalary  (=) svPrevSalary
2. inputlink.salary (=) svCurrentSalary 

使用

  

svPrevSalary

作为输出链接/字段的推导。

请注意,(=)只是为第一阶段变量指定svCurrentSalary的想法。

答案 1 :(得分:0)

当我开始做时,我遇到了同样的问题。我没有得到预期的结果。 对于这个问题,我们必须记下两件事。 1.我正在做什么工作。比如服务器,顺序或并行。我在并行环境中工作。 2.请记住链接的执行顺序,即i / o顺序。

code- curr_salary - > Prev_Sal,        link.salary - > curr_Salary

链接到prev_salary的prev_salary输出链接

注意 如果您在Parallel环境中工作,那么您必须在每个阶段的执行部分中创建顺序模式。 转到舞台 - >高级 - >执行模式 - >顺序的。

我认为它应该有效。我几乎是这样做的。Transformer_Image 感谢