如何存储一行中的变量,以便在Pentaho釜的后续行中使用?

如何存储一行中的变量,以便在Pentaho釜的后续行中使用?,pentaho,kettle,data-integration,pdi,Pentaho,Kettle,Data Integration,Pdi,我必须处理一个包含多个聚合级别的电子表格。通常,这很好,但在一种情况下,我需要将来自最高聚合级别的信息与来自下一聚合级别的信息结合使用。下面是一个例子: Title, Platform, Quantity, Revenue "Some title", , 100, 1000.00 , "Platform A", 12, 120.00 , "Platform B", 20,

我必须处理一个包含多个聚合级别的电子表格。通常,这很好,但在一种情况下,我需要将来自最高聚合级别的信息与来自下一聚合级别的信息结合使用。下面是一个例子:

Title,         Platform,    Quantity, Revenue
"Some title",          ,    100,      1000.00
            , "Platform A", 12,       120.00
            , "Platform B", 20,       200.00
            , "Platform C", 68,       680.00

"Some other title",       , 20,       200.00
            , "Platform B", 20,       200.00
...
第一条记录有一个标题“Some title”,以及所有平台的合计数量和收入指标。这主要是我需要读的。然而,在一种情况下,比如“平台B”,我需要检索该平台的特定值,并且我需要知道这些值的标题是什么


有人知道如何做到这一点吗?

我为此提出了一个jira:

因为这显然不是直接的

我只能想在一个“修改的javascript步骤”中完成这项工作,这是一个很小的代码片段,它可以记住以前的title值,然后在title为null时替换

这确实假设您的数据总是以这种方式排序的,并且还假设您的第一行总是有一个值


如果您有可以分组的内容(即,您没有显示的其他属性),那么您可以在该步骤中使用“传递所有行”选项,并在标题字段的聚合上获取组的“第一个非空”值。

在我看来,您似乎在尝试展平数据(某种程度上)

我可能做错了,但以下是使用类似数据集对我有效的方法:

  • (假设您的数据已按上述顺序排列)
  • (标记)公式步骤:如果([TITLE]=“”;1;0)-在新组的开头标记0
  • (Seq)顺序步骤:只是从1开始的直接顺序
  • (SeqCounter)添加值字段,更改顺序步骤:使用“标记”作为更改字段
  • (系数)计算器字段:A*B;SeqCounter*标记
  • (组)计算器字段:A+B;序号+因子
  • 这将为您提供一个“组”字段,告诉您每条线属于哪个组

    然后,我只需拆分数据并使用组作为联接字段重新联接


    我知道这是一篇老文章,但因为我在搜索时没有找到解决方案,所以我想我会把这篇文章提交给其他人来查找。

    我只想指出,这与Kettle处理行的方式完全不一致。行处理应该是可并行和可分布的。当地信息的缺乏以及对信息进行插补的重要性违反了必要的假设。我建议采用一个独立的预处理步骤,在该步骤中应用LOCF(上次观察结转)过程+1尽管b/c是一个合理的用例。