我们希望将 Kiba 作为一系列文件的批处理运行。提供文件掩码、从 FTP 下载文件、然后在每个文件上运行 ETL 作业、基于每个文件发送成功或失败通知的最佳结构是什么?
有没有办法在 Kiba 中做到这一点,或者最好的做法是在外部处理所有非 ETL 的东西,然后在每个文件上调用 kiba?
我们希望将 Kiba 作为一系列文件的批处理运行。提供文件掩码、从 FTP 下载文件、然后在每个文件上运行 ETL 作业、基于每个文件发送成功或失败通知的最佳结构是什么?
有没有办法在 Kiba 中做到这一点,或者最好的做法是在外部处理所有非 ETL 的东西,然后在每个文件上调用 kiba?
我最初会从最简单的事情开始,就像你说的那样,使用外部文件然后在每个文件上调用 Kiba。例如:
Dir[pattern].each
)。确保使用帮助程序,例如:
def system!(command)
fail "Command #{command} failed" unless system(command)
end
确保在进行系统调用时检测到执行失败。
对于您的 ETL 文件本身,您将使用一个at_exit
块来捕获失败并相应地通知(参见此处的示例Bugsnag,并post_process
在这种情况下使用一个块来捕获成功并通知。
这肯定会工作并且很简单,也就是说还有其他可能性,例如单个 ETL 文件将下载一个pre_process
块中的文件,然后有一个源将为每个下载的文件生成一个文件名,也许还有一个可以自己调用的转换kiba
在命令行上,甚至更高级的解决方案。
我会一如既往地坚持最简单的解决方案来开始!