过滤行步骤不起作用并初始化两个条件

Filter Rows Step not working and initializing both the conditions

如附图所示。 只有当来自 table 输入的计数值为 <> 0.Else 时,我才需要传递到执行 SQL 步骤,它将移动到虚拟并且不会去执行 process.But 它不工作并且 table 被删除,这实际上是在 SQL 步骤中编写的查询,并且还初始化了虚拟对象。(过滤条件是整数,因此 table 输入计数值)

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

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

  2. "Execute SQL Script" Pentaho Kettle 中的步骤是自触发的。它在转换的初始化阶段执行。检查此 wiki

解法:

查看下图:

1.在 SQL 步骤中启用 "Execute for each row":

想法是在ktr的初始化阶段停止查询的执行(执行SQL脚本)。因此,通过勾选 "execute for each row" 选项将确保 SQL 步骤在收到一行后执行,而不是在初始化期间执行。

查看下图:

2。使用"ABORT"步骤(只是一个建议)

使用'dummy step'没有错,但我觉得使用"Abort"步骤,这将确保一旦"filter step" returns中止当前正在执行的转换] 假条件。

3. 如果您不喜欢上述两种解决方案,唯一的其他出路是使用 [ 在作业级别创建解决方案=72=]步。这将解决您的问题。

here中附上示例代码。

希望对您有所帮助:)