结合Pentaho的3变换输出

时间:2015-03-07 11:41:03

标签: pentaho

我正在并行执行3次转换。三个转换的o / p包含相同的列名。 我已将所有转换的输出添加到作业中的常见虚拟步骤,并且还添加了WaitForSql步骤以等待所有3个转换完成执行,并且还在下一个转换中添加了唯一步骤以删除重复记录。

所有工作都适用于WaitForSQL,但是当下一次转换从结果中获取行并执行唯一步骤时,我也会在执行唯一步骤时获得重复记录。

有没有解决此问题的方法,请回复.....

3 个答案:

答案 0 :(得分:0)

在删除重复行之前,必须在虚拟步骤之后对结果流进行排序。排序还将确保在排序之前完成所有3个流。

我不知道你可以使用虚拟步骤来组合流结果。我总是使用append streams - 步骤。

答案 1 :(得分:0)

有几点:

  1. 您不能简单地在作业级别组合多个转换的输出。您将需要另一个转换来使用从结果中获取行来读取数据;工作不了解数据流,他们只知道任务(工作条目)和退出状态。

  2. 请注意作业级别的“并行启动下一个条目”。假设您有2个转换,trans1和trans2,并行启动,然后是虚拟步骤。假人将在trans1完成后调用TWICE,在trans2完成后调用另一个假人。作业跳不是数据流,而是工作流。如果要并行运行转换,然后返回到单个工作流,则需要一个调用转换的子工作,并且没有成功作业条目。这样,subjob只在第二次转换完成后才结束,然后才转到父级的虚拟步骤。

  3. 为什么需要在作业中运行这些转换?如果它们具有相同的列结构,为什么不将它们称为转换中的子转换,而不是作业?转换中的步骤始终是并行启动的,因此,如果要对性能进行并行化,则转换是实现它的方式,而不是工作。作业意味着按顺序运行多个任务,一个接一个地运行,工作流程控制取决于上一步的结果。

答案 2 :(得分:0)

如果您希望将其中三个输出放入单个文件中,那么您可以在单个转换中运行相同的3个实例,并在输出步骤中勾选附加目标选项