ETL框架需要哪些功能?

edo*_*aur 11 etl

我正在编写一个ETL(在带有mongodb后端的python中)并且想知道:ETL应该被称为ETL的标准函数和工具是什么?

该ETL将尽可能通用,采用可编写脚本的模块化方法.它主要用于保持不同的数据库同步,以及以不同的格式导入/导出数据集(xml和csv)我不需要任何多维工具,但它有可能以后需要它.

S.L*_*ott 16

让我们暂时考虑ETL用例.

  1. 提取.
    • 通过通用DB-API适配器读取数据库.
    • 通过类似的适配器读取平面文件.
    • 通过类似的适配器读取电子表格.
  2. 洁净.
    • 任意规则
    • 过滤并拒绝
    • 更换
    • 添加数据列
  3. 档案数据.
    • 统计频率表.
  4. 转换(请参阅清理,它们是具有相同实现的两个用例)
  5. 进行维度一致性查找.
    • 替换值或添加值.
  6. 骨料.
    • 在管道中的任何一点
  7. 加载.
    • 或者准备一个平面文件并运行DB产品的加载器.

此外,还有一些额外的要求不是单一用例.

  • 每个单独的操作必须是一个单独的进程,可以在Unix管道中连接,各个记录在进程之间流动.这使用了所有 CPU资源.

  • 对于无法推理出ETL前置条件的地方,您需要某种基于时间的调度程序.

  • 对于可以找出ETL处理步骤的前提条件的场所,您需要基于事件的计划.

注意.由于ETL是I/O绑定的,因此多线程对您没有好处.由于每个进程运行很长时间 - 特别是如果要处理数千行数据 - "重量级"进程的开销不会受到影响.