【问题标题】:What are the required functionalities of ETL frameworks?ETL 框架所需的功能是什么?
【发布时间】:2009-08-24 09:41:16
【问题描述】:

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

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

【问题讨论】:

  • 您现在有哪些用例?你需要它做什么?请列出您当前的用例,以便我们对此发表评论。

标签: etl


【解决方案1】:

让我们考虑一下 ETL 用例。

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

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

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

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

  • 您需要一个基于事件的计划,以便为能够确定 ETL 处理步骤的先决条件的地方制定计划。

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

【讨论】:

    【解决方案2】:

    这是一个随机列表,不分先后:

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

    【讨论】:

    • 我希望从 #4 中删除“图形”。虽然图片很可爱,但我们总是会阅读代码以了解真正发生了什么。
    【解决方案3】:

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

    DB1:客户 ID

    DB2:customer_id

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2016-10-30
      • 2011-03-11
      • 2011-07-05
      • 2022-01-08
      相关资源
      最近更新 更多