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