根据文本文件输入元数据创建数据库INSERT

时间:2017-08-28 16:17:20

标签: monitoring pentaho etl pentaho-spoon pentaho-data-integration

我正在开发一个ETL,并且必须做一些例程来监控它。

在开始时,我必须在DB上的INSERT中创建一个通知文件名和启动进程datetime的记录。此查询将返回记录的PK并且必须存储它。当该文件的ETL完成时,我必须更新该记录,通知ETL已成功完成并结束进程日期时间。

我使用文本文件输入来查找与其正则表达式匹配的文件,并将其“附加输出字段”添加到流中。但是我找不到只为第一个记录运行的组件,并且会为INSERT执行SQL命令。

3 个答案:

答案 0 :(得分:1)

您可以使用"识别最后一行"和"过滤行"在一起,所以你将只保留一行输入(只过滤最后一行)。 INSERT将在Filter Rows步骤之后。

enter image description here

由于您需要拆分流量,因此您需要将ID列与原始文本输入行连接。

答案 1 :(得分:1)

您还有Unique row。如果您没有指定过滤唯一值的字段,它将输出一行且恰好是一行。

现在,除非我误解了你的规格,否则我宁愿使用Kettle's logging system。单击任意位置,在弹出窗口中选择属性,然后选择“记录”选项卡。它将为您提供状态(已开始/结束/停止/ ...)以及大量其他信息,例如错误数量,读取和写入的行(只需告诉PDI它必须查找这些数字的步骤) 。

您甚至可以在数据库中几乎实时读取与PDI底部面板上显示的信息相同的信息。只需单击所需的字段,然后按SQL按钮即可创建文件。

请注意,由于历史原因,开始日期并非真正的开始日期(它是上一次成功运行的日期)。开始日期称为Replay date

此外,如果您需要此系统来监控负载并知道运行是否必须启动,请注意在突然结束系统时有时没有时间将“结束”写入日志。因此,logdate<now-10minutes更可靠。

enter image description here

答案 2 :(得分:0)

要仅对流的第一行执行某些操作,请使用&#39;添加序列&#39;步骤(从1开始),然后是“过滤行”。步骤条件&#39; seq = 1&#39;。

相关问题