为Pentaho循环,在每次执行时我都重新定义变量

时间:2019-06-28 09:33:34

标签: pentaho pentaho-spoon pdi

我有300行的Excel。我需要将这些行中的每一个用作转换中的字段名称。

我当时正在考虑创建一个工作,该工作为表的每一行设置一个变量,该变量随后将用于转换。

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

开始->转换(ExcelFileCopyRowsToResult)-> SetVariables->转换(使用当前变量名执行的transf)。

问题是我定义的变量永不更改,因此转换结果始终相同。

1 个答案:

答案 0 :(得分:1)

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

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

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

  1. 从结果中获取行开始转换。该应该每次使您获得一行。这些字段将直接在流中并且可以按原样使用。

  2. 将字段作为参数传递,因此它们可以像变量一样使用。我会经常使用它,但需要更多设置。

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