如果某行失败,如何停止 Pentaho ETL 进程?

How stop a Pentaho ETL process if some row fails?

我有一个具有以下流的转换:

错误处理行设置为 max error = 0。因此当它检测到一个错误时它会停止。

问题是如果第一行是正确的,ETL 会将这一行插入到最后的 table,然后停止进程。

是否可以在仍然执行该过程之前检查所有行?这样,如果某些行失败,则不会在最终 table 中删除数据(启用截断选项)。

在此转换中使用 temporary/staging table

如果您的存储 space 允许,暂存 table 可提供最可靠的解决方案,并最大限度地减少最终 table 的停机时间。

分期 table 在结构上应与最终 table 相同。然后,您可以 运行 作业内部的转换,只有在成功时才让作业继续进行 SQL 作业步骤,该步骤将 final 重命名为 old,staging 为 final,然后 old 为 staging。

这样,您的最终 table 永远不会为空,并且在重命名操作期间只有几分之一秒不可用。

您通过 making the transformation database transactional 实现了这一目标。