我正在尝试创建一个可以更改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
步骤来执行此操作,但是是否还有其他方法可以使用?更好的一个。 (只需要对此发表意见)
答案 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应用程序。