猿问

在表格中打印 For-Loop 结果

我的输入步骤有10行数据,我在for 循环中转换它们,我应该得到10行以上,但在这种情况下,我得到循环对每个数据进行的每次迭代的最后一次转换


我尝试使用,appendToFile()但结果数据没有用,pentaho 将其作为唯一标头读取 在我的alert()方法中,我可以看到 for 循环转换数据。


var PERIODO = 2

var i

var fecha_final

//var ruta_acess ="D:\TEST.accdb"

//var contenido

////var contenido2

//var arreglo_completo

for (i=0; i<=PERIODO; i++){


fecha_final = dateAdd(FECHA_INICIO,"d",i)

Alert(i)

}

正如我在下面的照片中所示,我只得到10条记录,而在另一张照片中出现了我想要的结果,即 for 循环每次迭代的结果数据


修改后的 JavaScript 值照片:

预期结果:

http://img1.mukewang.com/60cc5aaa00013ef403100322.jpg

得到的结果:

http://img1.mukewang.com/60cc5ab40001323b06000291.jpg



慕尼黑5688855
浏览 125回答 3
3回答

Helenr

For 循环在 PDI 中并不是真正的东西。转换适用于流经步骤的行集,因此最好使用这种思维方式来提高性能和稳定性。在您的场景中,每个传入行最终应为三个副本,但具有基于单个新字段(值为 0、1、2)的不同计算值。在 PDI 中执行此操作的方法是使用Join rows (cartesian product)&nbsp;step。它需要两组输入行并为输入行的每个组合输出一行,可能通过定义必须匹配的关键字段进行过滤。因此,如果主输入中有 10 行,第二行中有 3 行,它将输出 30 行。您首先需要创建一个数据网格作为第二个输入。定义一个整数字段,将其命名为清晰的名称,然后在第二个选项卡上分别用 0、1 和 2 填充三行。将两个输入连接到 Join rows 步骤。您不需要配置任何匹配的密钥。Join 步骤的输出将是每个输入行的三行,每行的值分别为 0、1、2。将该输出连接到计算器步骤并使用计算日期 A + B 天来替换 javascript 中的逻辑步。

蝴蝶不菲

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

陪伴而非守候

为了解决这个我用var row = createRowCopy(getOutputRowMeta().size()) var idx = getInputRowMeta().size() row[idx++] = DPROCESS这为迭代的每个结果添加一行。在转换结果只向我显示每个循环的最后一个值之前。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答