PDI-更新日志记录表中的字段值

时间:2018-08-01 07:43:36

标签: kettle pentaho-data-integration pdi

我正在尝试创建一个可以更改DB中字段值的转换(我使用的是postgreSQL)。

案例: 在postgre db中,我有一个名为Monitoring的表,它具有多个字段,如id, date, starttime, endtime, duration, transformation name, status, desc。我从转换日志记录中获得的所有这些价值。

因此,当我运行转换时,它将插入到Monitoring表中,并使用status为字段Running设置值。完成后,它将状态更新为Finish。我正在尝试的是自己定义表字段中的值,而不是从Transformation Logging中获取它,以便我可以像希望的那样自定义值。

目标是Update transformation status value from 'running' to 'finish/error/abort etc' in my db using pentaho and display that status in web app

我曾经考虑过使用Modified Java Script步骤来执行此操作,但是是否还有其他方法可以使用?更好的一个。 (只需要对此发表意见)

3 个答案:

答案 0 :(得分:1)

除了我的话,您是否尝试过Value Mapper

答案 1 :(得分:0)

修改的javascript并不是一个好主意。理想情况下,由于性能问题,不应使用它。您可以使用“添加常量” 步骤或“用户定义的Java类” 作为替代。

答案 2 :(得分:0)

您不能更改内置Logging表的值,原因很简单,即为PDI使用保留了这些值。如果发生硬错误,这会导致一个已知问题:例如,当数据库服务器崩溃或DPI代码未捕获到NullException时,状态未设置为完成。

您有一些解决方法。

  • 最简单的方法是在Web应用程序中进行测试(在ETL-Pilot中使用它进行测试(状态=完成或LogDate <15分钟前))。

  • 当转换未运行时,您可以更新表。例如,放置一个每小时(或更短时间)的crontab,将其LogDate早于1500万的任何转换状态更改为“完成”。此crontab可以是简单的SQL,也可以包含在转换中,该转换还可以检查表的大小和/或在可能出现错误的情况下发送电子邮件。

  • 您可以复制表(如果它是数据库系统中的非锁定操作),则可以修改“状态”列,并将该表用于Web应用程序。

相关问题