为了账号安全,请及时绑定邮箱和手机立即绑定

在表格中打印 For-Loop 结果

在表格中打印 For-Loop 结果

慕尼黑5688855 2021-06-16 09:25:13
我的输入步骤有10行数据,我在for 循环中转换它们,我应该得到10行以上,但在这种情况下,我得到循环对每个数据进行的每次迭代的最后一次转换我尝试使用,appendToFile()但结果数据没有用,pentaho 将其作为唯一标头读取 在我的alert()方法中,我可以看到 for 循环转换数据。var PERIODO = 2var ivar fecha_final//var ruta_acess ="D:\TEST.accdb"//var contenido////var contenido2//var arreglo_completofor (i=0; i<=PERIODO; i++){fecha_final = dateAdd(FECHA_INICIO,"d",i)Alert(i)}正如我在下面的照片中所示,我只得到10条记录,而在另一张照片中出现了我想要的结果,即 for 循环每次迭代的结果数据修改后的 JavaScript 值照片:预期结果:得到的结果:
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

For 循环在 PDI 中并不是真正的东西。转换适用于流经步骤的行集,因此最好使用这种思维方式来提高性能和稳定性。

在您的场景中,每个传入行最终应为三个副本,但具有基于单个新字段(值为 0、1、2)的不同计算值。

在 PDI 中执行此操作的方法是使用Join rows (cartesian product) step。它需要两组输入行并为输入行的每个组合输出一行,可能通过定义必须匹配的关键字段进行过滤。因此,如果主输入中有 10 行,第二行中有 3 行,它将输出 30 行。

您首先需要创建一个数据网格作为第二个输入。定义一个整数字段,将其命名为清晰的名称,然后在第二个选项卡上分别用 0、1 和 2 填充三行。

将两个输入连接到 Join rows 步骤。您不需要配置任何匹配的密钥。Join 步骤的输出将是每个输入行的三行,每行的值分别为 0、1、2。将该输出连接到计算器步骤并使用计算日期 A + B 天来替换 javascript 中的逻辑步。

//img1.sycdn.imooc.com//60cc5ac40001f50b10280693.jpg

查看完整回答
反对 回复 2021-06-18
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我的意思是在获得的结果照片中,“i”变量只显示“3”的值,我想要“1”、“2”和“3”


查看完整回答
反对 回复 2021-06-18
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

为了解决这个我用

var row = createRowCopy(getOutputRowMeta().size()) var idx = getInputRowMeta().size() row[idx++] = DPROCESS

这为迭代的每个结果添加一行。在转换结果只向我显示每个循环的最后一个值之前。


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信