11

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

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

4

3 回答 3

16

让我们考虑一下 ETL 用例。

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

此外,还有一些不是单一用例的附加要求。

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

  • 您需要某种基于时间的调度程序来处理难以推理出 ETL 前提条件的地方。

  • 您需要一个基于事件的时间表来确定 ETL 处理步骤的先决条件。

笔记。由于 ETL 是 I/O 绑定的,因此多线程对您没有什么好处。由于每个进程都运行了很长时间——尤其是如果你有数千行数据要处理——“重量级”进程的开销不会受到伤害。

于 2009-08-24T10:26:51.877 回答
4

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

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

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

DB1:客户 ID

DB2:客户 ID

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

  • 不一定是“必需的功能”,但确实会让很多用户感到非常高兴。
于 2009-08-24T11:38:42.293 回答