我正在编写一个ETL(在带有mongodb后端的python中)并且想知道:ETL应该被称为ETL的标准函数和工具是什么?
该ETL将尽可能通用,采用可编写脚本的模块化方法.它主要用于保持不同的数据库同步,以及以不同的格式导入/导出数据集(xml和csv)我不需要任何多维工具,但它有可能以后需要它.
让我们暂时考虑ETL用例.
提取.
通过通用DB-API适配器读取数据库.
通过类似的适配器读取平面文件.
通过类似的适配器读取电子表格.
洁净.
任意规则
过滤并拒绝
更换
添加数据列
档案数据.
统计频率表.
转换(请参阅清理,它们是具有相同实现的两个用例)
进行维度一致性查找.
替换值或添加值.
骨料.
在管道中的任何一点
加载.
或者准备一个平面文件并运行DB产品的加载器.
此外,还有一些额外的要求不是单一用例.
每个单独的操作必须是一个单独的进程,可以在Unix管道中连接,各个记录在进程之间流动.这使用了所有 CPU资源.
对于无法推理出ETL前置条件的地方,您需要某种基于时间的调度程序.
对于可以找出ETL处理步骤的前提条件的场所,您需要基于事件的计划.
注意.由于ETL是I/O绑定的,因此多线程对您没有好处.由于每个进程运行很长时间 - 特别是如果要处理数千行数据 - "重量级"进程的开销不会受到影响.