在Pentaho ETL Kettle中我想一步到达上一行。 让我们将数据流声明为myMat:
myMat:
col0 col1
row0: 15 a
row1: 10 b
row2: 24 hi
row3: 11 bye
我想用这个计算:
newNumber= myMat[i][0] + myMat[i-1][0]
你知道在水壶里有什么办法吗?
答案 0 :(得分:1)
您也可以使用Analytic Query
步骤执行此类操作。但是,您需要在数据集中使用分组字段。如果要将整个集合作为一个组进行处理,请在分析查询步骤之前插入一个Add Constants
步骤,例如只需一个1,然后按此组进行分组。
无论哪种方式,如果你想在计算中使用它,你将不得不处理NULL。组中第一行的LAG 1将始终为NULL。如果您只想将其映射到0,则可以使用If field values is null
步骤进行映射。这可能是它的样子:
然而,G Gordon是对的。您应该根据您尝试解决的问题来考虑这是否真的有意义。
答案 1 :(得分:0)
通过在处理的每一行之间存储状态,您可以在自定义Java或JavaScript步骤中执行此类操作。然而...
无法保证流的顺序。此外,您可以同时并行处理多个行。所以,你可以想象,这种计算可能会有问题。你想要达到的目标是什么?几乎肯定有更好的方法。