我正在开发ETL。第一步是文本文件输入,它将来自“附加输出字段”的一些元数据添加到流中,包括文件名和上次修改。根据数据库查询的结果继续流式传输
我必须向DB进行查询,以验证具有最后修改日期时间的文件名是否已经被处理。如果是这样,流必须停止,并且下一步不能被处理。
这可能吗?我用google搜索了一下,发现没有例子。
我正在开发ETL。第一步是文本文件输入,它将来自“附加输出字段”的一些元数据添加到流中,包括文件名和上次修改。根据数据库查询的结果继续流式传输
我必须向DB进行查询,以验证具有最后修改日期时间的文件名是否已经被处理。如果是这样,流必须停止,并且下一步不能被处理。
这可能吗?我用google搜索了一下,发现没有例子。
Pentaho并行处理所有步骤,所以这种线性抽象可能有点混乱。
你需要做的是不返回行,如果不想继续处理。如果后续步骤接收到0行,则它们不会执行任何操作。
有一些方法可以做到这一点:
你将很快面对的问题是:“如果我尝试开始我的转换已经开始?”。这听起来像是一个学术问题,直到你的crontab开始僵局,或者你的用户抱怨你三周前的数据被重复计算。
您需要检查job
。与所有步骤并行运行的转变相反,工作条目依次运行。您可以使用Scripting/SQL
条目并输入条件,如this question中所述的logdate<now()-10minutes
。
现在,您的规范还有一个更强大的体系结构:将所有传入文件放入特定文件夹,处理它们然后将它们移动到归档目录。事实上,在处理之前将它们移动到存档中,避免重复加载。