ETL框架需要哪些功能?

时间:2009-08-24 09:41:17

标签: etl

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

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

3 个答案:

答案 0 :(得分:16)

让我们暂时考虑ETL用例。

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

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

    • 您需要某种基于时间的调度程序,以便在推理其ETL前置条件时遇到问题。

    • 您需要一个基于事件的计划,以便能够找出ETL处理步骤的前提条件。

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

答案 1 :(得分:4)

这是一个随机列表,没有特别的顺序:

  1. 连接各种来源,包括所有主要的关系数据库。
  2. 处理非关系数据源,如文本文件,Excel,XML等。
  3. 允许将多个来源映射到单个目标。
  4. 提供一个工具来帮助从源字段到目标字段进行映射。
  5. 提供一个随意注入转换的框架。
  6. 用于编写复杂转换的可编程API。
  7. 优化加载过程以提高速度。

答案 2 :(得分:0)

列名称的自动/启发式映射。例如,简单的字符串映射:

DB1:customerId

DB2:customer_id

我发现我在DTS / SSIS中完成的很多工作都可以自动生成。

  • 不一定是“必需的功能”,但确实会让很多用户感到高兴。