打印 For-Loop 结果为 table
Print For-Loop results in a table
我的输入步骤中有 10 行数据,我将它们转换为 for-loop 我应该得到超过 10 行,但在这种情况下,我得到了循环对每个数据
的每次迭代的最后一次转换
我尝试使用 appendToFile()
但结果数据没有用,pentaho 将其读取为唯一 header
在我的 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 条记录,而在另一张照片中出现了我想要的结果,即 [= 的每次迭代的结果数据50=]
修改JavaScript值照片:
预期结果:
得到的结果:
我的意思是,在获得的结果照片中,"i" 变量仅显示“3”的值,我希望有“1”、“2”和“3”[=10] =]
For 循环在 PDI 中并不是真正的东西。转换对流经这些步骤的行集起作用,因此最好使用这种思维方式来提高性能和稳定性。
在您的方案中,每个传入行最终应为三个副本,但具有基于单个新字段(值为 0、1、2)的不同计算值。
在 PDI 中执行此操作的方法是使用 连接行(笛卡尔积) 步骤。它需要两组输入行,并为输入行的每个组合输出一行,可能通过定义必须匹配的关键字段进行过滤。所以如果你在主输入中有 10 行,在第二个输入中有 3 行,它将输出 30 行。
您首先需要创建一个数据网格作为第二个输入。定义一个整数字段,将其命名为明确的名称,然后在第二个选项卡上分别用 0、1 和 2 填充三行。
将两个输入连接到连接行步骤。您不需要配置任何匹配的密钥。
Join 步骤的输出将是每个输入行的三行,每个行的值为 0、1、2。将该输出连接到计算器步骤并使用计算 Date A + B days 替换来自 javascript步.
为了解决这个问题,我使用了
var row = createRowCopy(getOutputRowMeta().size())
var idx = getInputRowMeta().size()
row[idx++] = DPROCESS
这为迭代的每个结果添加一行。
在转换结果只显示每个循环的最后一个值之前。
我的输入步骤中有 10 行数据,我将它们转换为 for-loop 我应该得到超过 10 行,但在这种情况下,我得到了循环对每个数据
的每次迭代的最后一次转换我尝试使用 appendToFile()
但结果数据没有用,pentaho 将其读取为唯一 header
在我的 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 条记录,而在另一张照片中出现了我想要的结果,即 [= 的每次迭代的结果数据50=]
修改JavaScript值照片:
预期结果:
得到的结果:
我的意思是,在获得的结果照片中,"i" 变量仅显示“3”的值,我希望有“1”、“2”和“3”[=10] =]
For 循环在 PDI 中并不是真正的东西。转换对流经这些步骤的行集起作用,因此最好使用这种思维方式来提高性能和稳定性。
在您的方案中,每个传入行最终应为三个副本,但具有基于单个新字段(值为 0、1、2)的不同计算值。
在 PDI 中执行此操作的方法是使用 连接行(笛卡尔积) 步骤。它需要两组输入行,并为输入行的每个组合输出一行,可能通过定义必须匹配的关键字段进行过滤。所以如果你在主输入中有 10 行,在第二个输入中有 3 行,它将输出 30 行。
您首先需要创建一个数据网格作为第二个输入。定义一个整数字段,将其命名为明确的名称,然后在第二个选项卡上分别用 0、1 和 2 填充三行。
将两个输入连接到连接行步骤。您不需要配置任何匹配的密钥。 Join 步骤的输出将是每个输入行的三行,每个行的值为 0、1、2。将该输出连接到计算器步骤并使用计算 Date A + B days 替换来自 javascript步.
为了解决这个问题,我使用了
var row = createRowCopy(getOutputRowMeta().size()) var idx = getInputRowMeta().size() row[idx++] = DPROCESS
这为迭代的每个结果添加一行。 在转换结果只显示每个循环的最后一个值之前。