1

如附图所示。仅当表输入中的计数值为 <> 0 时,我才需要传递到执行 SQL 步骤。否则它将移动到虚拟并且不会去执行进程。但它不起作用并且表被删除,这实际上是用 SQL 步骤编写的查询并初始化虚拟对象。(过滤条件为整数,因此表输入计数值)图片

4

1 回答 1

1

如果您遇到问题,需要注意一些因素:

  1. PDI 中的所有过程都是并行初始化的。因此,如果您在转换中有步骤(如表格输入、表格输出等)。当您执行 ktr 时,所有这些步骤都会一起初始化。

  2. Pentaho Kettle 中的“执行 SQL 脚本”步骤是自触发的。它在转换的初始化阶段执行。检查这个维基

解决方案:

检查下图:

在此处输入图像描述

1. 在 SQL 步骤中启用“对每一行执行”:

这个想法是在 ktr ( Execute SQL Script )的初始化阶段停止查询的执行。因此,通过勾选“为每一行执行”选项将确保 SQL 步骤在收到一行后执行,而不是在初始化期间执行。

检查下图:

在此处输入图像描述

2.“ABORT”步骤的使用 (只是一个建议)

使用“虚拟步骤”没有错,但我觉得使用“中止”步骤,这将确保一旦“过滤步骤”返回错误条件,执行中的当前转换被中止。

3.如果您不喜欢上述两种解决方案,唯一的出路是使用“简单评估”步骤在工作级别创建解决方案。这将解决您的问题。

在此处附上示例代码。

希望能帮助到你 :)

于 2015-01-17T19:31:01.837 回答