软件

我正在使用Pentaho Data Integration 5.4

输入数据及说明

来自文件的输入数据(简化后,有更多列):

number       name
1009       ProductA
2150       ProductB
3235       ProductC
           ProductD
           ProductE
1234       ProductF
7765       ProductG
4566       ProductH
           ProductI
9907       ProductJ


问题是我有一个Excel文件格式xlsx,其中的数据带有合并的单元格,对于id的一个值,有1..n个值行。

将文件转换为csv后,尽管没有合并一列,但缺少下一行(第一行除外)的值(请参见示例id=3id=6)。

我正在使用步骤sequence生成一个Add sequence,输入按最初存储在文件中的方式进行排序。

实现目标的步骤

基本上我需要做的是:


查找第一个非空值,其sequence_number小于current_row.sequence_number
将字段name中的值连接到该匹配行
继续扫描sequence_number高于上次扫描的下一行


如前所述,在这种情况下可以有1..n个值行。

预期产量

number       name
1009       ProductA
2150       ProductB
3235       ProductC; ProductD; ProductE
1234       ProductF
7765       ProductG
4566       ProductH; ProductI
9907       ProductJ


我的方法

我相信我可以在循环中执行此操作,方法是使用Analytic Query并计算LAG(1)然后将具有空值的一行的name列连接起来,并从空行中丢弃其他列的值-然后执行此操作在一个循环中(假设最大次数为20次),但我确实认为这是个坏主意。

可能有更好的方法来实现此结果,例如,使用Java Script步骤,从当前行开始向后扫描行(基于sequence编号),但是我不知道这些功能(如果存在)。

在没有空行的情况下,如何使用Modified Java Script Value步骤或任何其他有效方法在不使用循环的情况下实现文件的整个内容的实现?

最佳答案

为了解决这个问题,我将使用Modified Java Script Value保存最后看到的产品并将其用于所有行,然后使用Group By对列进行分组。

javascript - 从当前行向后查找第一个非空值扫描行-LMLPHP

javascript - 从当前行向后查找第一个非空值扫描行-LMLPHP

javascript - 从当前行向后查找第一个非空值扫描行-LMLPHP

javascript - 从当前行向后查找第一个非空值扫描行-LMLPHP

关于javascript - 从当前行向后查找第一个非空值扫描行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34860322/

10-12 03:41
查看更多