1

在 Pentaho ETL Kettle 中,我想一步访问前一行。让我们将数据流声明为 myMat:

我的垫子:

      col0  col1
row0: 15    a
row1: 10    b
row2: 24    hi
row3: 11    bye

我想使用这个计算:

newNumber= myMat[i][0] + myMat[i-1][0]

你知道在水壶里有什么方法吗?

4

2 回答 2

1

Analytic Query你也可以用step来做这种事情。不过,您需要在数据集中有一个分组字段。如果您想将整个集合作为一个组进行处理,请Add Constants在插入的分析查询步骤之前放置一个步骤,例如一个 1,然后按此分组。

无论哪种方式,如果您想在计算中使用它,您将不得不处理 NULL。您的组的第一行的 LAG 1 将始终为 NULL。如果您只想将其映射到 0,您可以通过一个If field values is null步骤来执行此操作。下面是它的样子:

上一行的总和

但是,G 戈登是正确的。您应该根据您要解决的问题考虑这是否真的有意义。

于 2013-06-29T00:14:44.380 回答
0

您可以通过在您处理的每一行之间存储状态来在自定义 Java 或 JavaScript 步骤中执行此类操作。然而...

不保证流的顺序。此外,您可以同时并行处理多行。因此,正如您可以想象的那样,这种计算可能会出现问题。你想达到什么目的?几乎可以肯定有更好的方法。

于 2013-06-28T17:22:16.177 回答