将Kiba用作文件批处理的最佳实践

时间:2016-09-09 15:41:50

标签: kiba-etl

我们希望在一系列文件上运行Kiba作为批处理。提供文件掩码,从FTP下载文件,然后在每个上运行ETL作业,以每个文件为基础发送成功或失败通知的最佳结构是什么?

有没有办法在Kiba内执行此操作,或者最好只是在外部处理所有非ETL内容,然后在每个文件上调用kiba?

2 个答案:

答案 0 :(得分:1)

我最初会从最简单的事情开始,就像你说的那样,使用外部文件然后在每个文件上调用Kiba。例如。 :

  • 构建一个rake任务,在本地下载文件(并将其从FTP中删除,或者至少将它们移动到一个单独的文件夹以避免双重处理),在一个众所周知的文件夹中作为收件箱。有关如何执行此操作的有趣链接,请参阅here
  • 然后构建另一个rake任务来迭代收件箱文件夹并处理给定文件(使用Dir[pattern].each)。

确保使用帮助程序,例如:

def system!(command)
  fail "Command #{command} failed" unless system(command)
end

确保在进行系统调用时检测执行失败。

对于您的ETL文件本身,您将使用一个at_exit块来捕获失败并相应地通知(请参阅此处的示例Bugsnagpost_process块以捕获成功并通知那种情况。

这肯定会起作用并且很简单,表示还有其他可能性,例如单个ETL文件将在pre_process块中下载文件,然后有一个源将为每个下载文件生成一个文件名,也许是一个可以在命令行上调用kiba的转换,或者甚至更高级的解决方案。

我会一如既往地坚持最简单的解决方案!

如果这正确回答了您的问题,请告诉我们!

答案 1 :(得分:-1)


为什么不能使用Control -M作业调度。它非常有用和高效。