gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:20:11 24 4
gpt4 key购买 nike

软件

我正在使用 Pentaho 数据集成 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).

我正在使用 Add sequence 步骤生成一个 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 对列进行分组.

Transformation

Javascript

Group by step

Output

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com