Pentaho的循环,每次执行时我都重新定义一个变量

Pentaho的循环,每次执行时我都重新定义一个变量,pentaho,pentaho-spoon,pdi,Pentaho,Pentaho Spoon,Pdi,我有一个300行的excel。我需要在转换中使用这些行中的每一行作为字段名 我在考虑创建一个作业,为表的每一行设置一个变量,然后在转换中使用该变量 我尝试将变量定义为一行中的值,转换工作。现在我需要一个循环,它一个接一个地获取值,并重新定义我创建的变量,然后执行转换。 我尝试定义具有以下内容的作业: 开始->转换(ExcelFileCopyRowsToResult)->设置变量->转换(此时使用任何变量名执行的转换) 问题是,我定义的变量从未更改,因此转换结果总是相同的。对结果集中的每一行执行转

我有一个300行的excel。我需要在转换中使用这些行中的每一行作为字段名

我在考虑创建一个作业,为表的每一行设置一个变量,然后在转换中使用该变量

我尝试将变量定义为一行中的值,转换工作。现在我需要一个循环,它一个接一个地获取值,并重新定义我创建的变量,然后执行转换。 我尝试定义具有以下内容的作业:

开始->转换(ExcelFileCopyRowsToResult)->设置变量->转换(此时使用任何变量名执行的转换)


问题是,我定义的变量从未更改,因此转换结果总是相同的。

对结果集中的每一行执行转换是PDI中的标准操作方式。大部分操作都是正确的,但不要设置变量(在作业流中只发生一次),而是直接使用结果行

首先,在编辑窗口中将第二个转换配置为对每一行执行

然后,可以使用以下两种方法之一将字段传递到转换中,具体取决于哪种方法更容易:

  • 从结果中获取行开始转换。这应该让你每次排一行。字段将直接在流中,并且可以这样使用

  • 将字段作为参数传递,以便它们可以像变量一样使用。我经常使用这个,但它需要更多的设置

    • 在第二个转换中,转到“属性”并在“参数”选项卡中输入所需的变量名
    • 保存转换
    • 在作业中,打开“变换编辑”窗口并转到“参数”
    • 单击“获取参数”
    • 在每个参数的流列名下键入第一次转换的字段名

  • 好的,我有点明白你的意思,但我似乎无法让它工作。这就是我拥有的:MainJob:Start->Transformation1(在我的内部有excel->CopyRowstoRes)->Job2(带有执行每个输入行的选项)Job2:Start->Transformation2(为了测试,我已经将输出设置为另一个excel)。这为我创建了新的excel,但它是空的,所以不知道我做错了什么。不要将作业放在trans 2周围,只需将其作为主作业的下一步。因此,开始->转换1->转换2->成功