数据仓库中的 ETL(提取、转换和加载)流程

智能摘要

数据仓库中的 ETL(提取、转换和加载)流程描述了将数据从多个异构数据源系统地迁移到集中式存储库的过程。它通过结构化的提取、转换和优化的加载机制,确保数据的一致性、准确性和可用于分析的可用性。

  • 核心原则: ETL 从各种系统中提取原始数据,对其进行转换以符合业务逻辑,并将其加载到统一的数据仓库中,从而支持战略决策。
  • 提取焦点: 数据通过全部或部分提取方法从实时生产系统导入到暂存区,并通过验证确保数据的完整性、准确性和关键完整性。
  • 转变阶段: 原始数据经过清洗、映射、转换和验证,使用查找表、字符集规范化和业务规则来标准化不一致的格式。
  • 时间 Integrity 保证: 阈值检查、重复数据删除、空值处理和模式一致性等验证措施可保持一致性,并防止处理过程中数据损坏。
  • 加载优化: 最终数据通过初始刷新、增量刷新或完全刷新模式加载;恢复机制确保批量加载期间的容错性和性能。
  • 工具利用率: 主流 ETL 平台——MarkLogic、 Oracle和 Amazon Redshift——增强集成性、可扩展性和查询效率。
  • Opera国家最佳实践: 平衡数据清洗范围和成本,维护辅助索引以提高速度,并存储汇总数据以优化存储和检索。

ETL(提取、转换和加载)

什么是ETL?

ETL ETL 是一个从不同源系统中提取数据,然后转换数据(例如应用计算、连接等),最后将数据加载到数据仓库系统的过程。ETL 的全称是 Extract, Transform, and Load(提取、转换和加载)。

人们很容易认为创建数据仓库仅仅是从多个数据源提取数据并将其加载到数据库中。然而,实际上,它需要一个复杂的 ETL 流程。ETL 流程需要包括开发人员、分析师、测试人员和高管在内的各个利益相关者的积极参与,并且在技术上具有挑战性。

为了保持其作为决策工具的价值,数据仓库系统需要随着业务变化而变化。ETL 是数据仓库系统的一项周期性活动(每日、每周或每月),因此需要具备敏捷性、自动化和完善的文档记录。

为什么需要 ETL?

组织中采用 ETL 的原因有很多:

  • 它可以帮助公司分析业务数据,从而做出关键的业务决策。
  • 事务型数据库无法回答 ETL 示例可以回答的复杂业务问题。
  • 数据仓库提供了一个通用的数据存储库。
  • ETL 提供了一种将数据从各种来源移动到数据仓库的方法。
  • 随着数据源的变化,数据仓库将自动更新。
  • 一个设计完善且文档齐全的 ETL 系统对于数据仓库项目的成功几乎是必不可少的。
  • 允许验证数据转换、聚合和计算规则。
  • ETL流程允许对源系统和目标系统之间的样本数据进行比较。
  • ETL 流程可以执行复杂的转换,并且需要额外的区域来存储数据。
  • ETL 帮助将数据迁移到数据仓库,将不同的格式和类型转换为一个一致的系统。
  • ETL 是访问和操作源数据到目标数据库的预定义过程。
  • 数据仓库中的 ETL 为业务提供了深厚的历史背景。
  • 它有助于提高生产力,因为它能够对信息进行编码和重用,而无需技术技能。

在充分了解 ETL 的价值之后,让我们深入了解使其运作的三步流程。

数据仓库中的 ETL 流程

ETL 是一个三步过程

ETL流程
ETL流程

步骤1)提取

在 ETL 架构的这一步骤中,数据从源系统提取到暂存区。如有必要,数据转换也在暂存区完成,以避免降低源系统的性能。此外,如果将损坏的数据直接从源系统复制到数据仓库数据库,回滚将非常困难。暂存区提供了一个机会,可以在数据进入数据仓库之前对其进行验证。

数据仓库需要集成具有不同数据库管理系统、硬件的系统, Opera通信系统和通信协议。数据源可能包括传统应用程序(如大型机)、定制应用程序、终端设备(如ATM机、呼叫交换机)、文本文件、电子表格、ERP系统、供应商和合作伙伴提供的数据等等。

因此,在提取数据并进行物理加载之前,需要建立逻辑数据映射。该数据映射描述了源数据和目标数据之间的关系。

三种数据提取方法:

  1. 完全提取
  2. 部分提取-无需更新通知。
  3. 部分提取-带有更新通知

无论采用何种方法,数据提取都不应影响源系统的性能和响应时间。这些源系统是实时生产数据库。任何性能下降或系统卡顿都可能影响公司的盈利。

提取过程中会进行一些验证:

  • 使记录与源数据一致
  • 请确保未加载任何垃圾邮件/不需要的数据。
  • 数据类型检查
  • 删除所有类型的重复/碎片数据
  • 检查所有钥匙是否都已就位。

步骤2)转型

从源服务器提取的数据是原始数据,无法直接使用。因此,需要对其进行清洗、映射和转换。事实上,这是 ETL 流程的关键步骤,它通过改变数据,使其能够生成富有洞察力的商业智能 (BI) 报告。

这是ETL的重要概念之一,指的是对提取的数据应用一系列函数。不需要任何转换的数据称为原始数据。 直接移动 or 传递数据.

在转换步骤中,您可以对数据执行自定义操作。例如,如果用户需要计算数据库中不存在的销售收入总和,或者如果表中的名字和姓氏位于不同的列中,则可以在加载之前将它们连接起来。

数据集成问题
数据集成问题

以下是数据 Integrity 问题:

  1. 同一个人的不同拼写方式,例如 Jon、John 等。
  2. 公司名称有多种表示方式,例如 Google、Google Inc.
  3. 使用不同的名称,例如 Cleaveland 和 Cleveland。
  4. 可能存在这样的情况:同一客户的不同应用程序会生成不同的账号。
  5. 在某些情况下,所需数据文件为空。
  6. POS机采集到无效产品,因为手动输入容易出错。

在此阶段进行验证

  • 过滤 – 仅选择要加载的特定列
  • 使用规则和查找表进行数据标准化
  • 字符集转换和编码处理
  • 计量单位换算,例如日期和时间换算、货币换算、数值换算等。
  • 数据阈值验证检查。例如,年龄不能超过两位数。
  • 从暂存区到中间表的数据流验证。
  • 必填字段不应留空。
  • 清理(​​例如,将 NULL 映射到 0,或将性别男性映射到“M”,将女性映射到“F”,等等)
  • 将一列拆分成多列,并将多列合并成一列。
  • 转置行和列,
  • 使用查找合并数据
  • 使用任何复杂的数据验证(例如,如果一行中的前两列为空,则自动拒绝处理该行)

步骤3)加载

将数据加载到目标数据仓库数据库是 ETL 流程的最后一步。在典型的数据仓库中,需要在相对较短的时间内(例如几个晚上)加载大量数据。因此,加载过程必须针对性能进行优化。

如果发生负载故障,应配置恢复机制,以便在不丢失数据完整性的情况下从故障点重新启动。数据仓库管理员需要根据当前服务器性能监控、恢复或取消负载。

加载类型:

  • 初始负载 — 填充所有数据仓库表
  • 增量负载 — 根据需要定期进行持续改进。
  • 完全刷新 — 删除一个或多个表的内容并重新加载新数据。

负载验证

  • 确保关键字段数据不缺失也不为空。
  • 根据目标表测试建模视图。
  • 检查合并值和计算结果是否一致。
  • 对维度表和历史表中的数据进行检查。
  • 检查已加载的事实和维度表的 BI 报告。

ETL管道和并行处理

ETL 流水线允许进行提取、转换和加载。 同时 而不是按顺序进行。一旦提取出一部分数据,就会对其进行转换并加载,同时继续提取新的数据。 并行处理 显著提高性能,减少停机时间,并最大限度地利用系统资源。

这种并行处理对于……至关重要 实时分析大规模数据集成和基于云的 ETL 系统。通过任务重叠,流水线式 ETL 可确保现代企业更快的数据传输、更高的效率和更一致的数据交付。

AI如何提升现代ETL管道的性能?

人工智能通过使数据管道具备自适应、智能和自优化能力,彻底革新了 ETL 流程。AI 算法无需手动配置即可自动映射模式、检测异常并预测转换规则。这使得 ETL 工作流能够轻松应对不断变化的数据结构,同时保持数据质量。

现代人工智能增强型 ETL 平台利用 AutoML 等技术进行自动特征工程,利用 NLP 驱动的模式映射理解字段间的语义关系,并利用异常检测算法实时识别数据质量问题。这些功能显著减少了传统 ETL 开发和维护中所需的人工工作量。

机器识别 通过增强性能调优,确保更快、更准确的数据集成。借助自动化和预测智能,AI 驱动的 ETL 可提供实时洞察,并显著提升云端和混合数据生态系统的效率。

为了实现上述概念,企业需要依赖专门的ETL工具。以下是市场上一些领先的工具。

ETL工具

有许多 ETL工具 市面上均有销售。以下列举一些最主要的几种:

1. 马克逻辑:

MarkLogic 是一款数据仓库解决方案,它利用一系列企业级功能,使数据集成更加轻松快捷。它可以查询不同类型的数据,例如文档、关系和元数据。

https://www.marklogic.com/product/getting-started/


2. Oracle:

Oracle 是业界领先的数据库。它提供广泛的数据仓库解决方案,支持本地部署和云端部署。它通过提高运营效率来帮助优化客户体验。

https://www.oracle.com/index.html


3. Amazon 红色Shift:

Amazon Redshift 是一款数据仓库工具。它是一款简单且经济高效的工具,可使用标准方法分析所有类型的数据。 SQL 和现有的 BI 工具。它还允许针对 PB 级结构化数据运行复杂查询。

https://aws.amazon.com/redshift/?nc2=h_m1

以下是有用的 数据仓库工具。

ETL流程的最佳实践

以下是ETL流程步骤的最佳实践:

  • 永远不要尝试清理所有数据:
    每个组织都希望所有数据都干净,但大多数组织要么不愿意付费等待,要么不愿意等待。清理所有数据耗时太长,因此最好不要尝试清理所有数据。
  • 平衡清洁工作与业务优先事项:
    虽然应该避免过度清理所有数据,但务必确保关键字段和影响较大的字段得到清理,以保证数据的可靠性。清理工作应重点放在直接影响业务决策和报告准确性的数据元素上。
  • 确定清理数据的成本:
    在清理所有脏数据之前,确定每个脏数据元素的清理成本非常重要。
  • 为了加快查询处理,有辅助视图和索引:
    为了降低存储成本,将汇总的数据存入磁盘磁带。此外,还需要在需要存储的数据量和其详细用途之间进行权衡。在数据粒度级别上进行权衡以降低存储成本。

常见问题解答:

SQL中的ETL指的是使用结构化查询语言在系统之间提取、转换和加载数据。它管理数据移动、清洗和集成,从而在关系数据库中实现结构化分析。

ETL 不是一种编程语言,而是一个流程框架。它使用 SQL, Python或者使用 Talend 和 Informatica 等专用工具来自动执行跨系统的数据提取、转换和加载。

虽然核心的 ETL 流程包含三个主要阶段(提取、转换、加载),但如果加入验证阶段,通常会扩展到五个步骤:(1)从源系统提取数据;(2)验证提取的数据;(3)应用业务规则进行转换;(4)加载到目标数据仓库;(5)验证加载数据的完整性。这些额外的验证步骤确保了数据的准确采集、清洗和集成。

最佳 ETL 工具取决于规模和集成需求。目前领先的 ETL 工具包括用于流程编排的 Apache Airflow、用于自动化的 Fivetran 以及用于基于云的 AI 增强型数据转换的 AWS Glue。

自动化利用智能调度、实时监控和自我修复功能来协调 ETL 管道。它能够实现数据的持续集成和交付,同时最大限度地减少停机时间和人为错误。

云原生 ETL 利用可扩展计算、无服务器架构和集成 AI 服务。与静态的本地 ETL 环境相比,它可以动态分配资源、支持实时流处理,并提供更高的灵活性。

总结一下这篇文章: