回滚后继续Pentaho转换

时间:2016-03-02 16:17:48

标签: pentaho kettle

使用Kettle-Spoon 5.1,我有一个变换:

  1. 从数据库(oracle)中拉出一行
  2. 将行发送到REST api(通过REST 客户)
  3. 使用切换/案例步骤来查看结果。如果结果是好的,我从数据库中删除记录(执行SQL),否则,我回滚事务
  4. 注意,回滚取决于结果,不一定是错误/异常。 如果特定事务被回滚,我仍然希望继续处理其他行(不希望转换停止)。

    两个问题:

    1. 是否有一种强制回滚的干净方法? (目前我有一个“扔”的javascript步骤
    2. 如何在回滚后强制事务继续?

1 个答案:

答案 0 :(得分:2)

在转换中,Pentaho会同时处理流中的行,所有这些都在同一个事务中。要回滚单行,您需要为每行提供单独的事务,而Pentaho并不支持。

我建议使用另一种方法来达到同样的效果。两种可能性:

  1. 在收到REST结果之前,不要更改数据库。那样,没有什么可以回滚的。当然,您可以在内存(在流字段中)或临时数据库表中进行更改,以便准确了解它们的内容。
  2. 以某种方式跟踪您所做的数据库更改,以便在REST结果表明您应该这样做时撤消它们。根据您的工作方式,您可以在流字段或临时数据库表中跟踪这些更改。