什么是 ETL?

ETL(提取、转换、加载)是一个数据集成的过程,它从多个来源收集数据,对其进行标准化,然后加载到数据仓库中进行分析加、加载到数据库进行存储或加载到其他类型的数据源。组织使用 ETL 将分布在不同语言的多个系统中的数据转换为统一的格式和样式,这样更容易进行分析。随着信息的爆炸式增长,组织拥有海量数据可供使用。但是,许多组织都受到数据的多样性和容量的困扰。许多企业难以将数据从源系统中移出、将其翻译成通用语言以及加载到另一个系统,也就无法对数据进行整体分析以获得完整视图。ETL 通过跨各种系统提取、转换和加载数据,帮助组织高效利用数据,以增强其商业智能

ETL 示意图

ETL 在多个领域有许多使用案例。其中之一是从客户数据中获取价值。客户以不同的方式与品牌互动。ETL 会整理所有这些来自不同来源的客户数据,将数据转换为符合标准的格式,然后将其加载到数据仓库或其他数据源中进行分析。当公司可以轻松地分析使用相同语言和同一位置的数据时,这使组织可以准确地全方位了解客户与其品牌的互动情况。ETL 使组织能够了解客户的需求,并为他们提供高度个性化的体验。

O'Reilly 报告:构建统一的数据基础架构
O'Reilly 报告:构建统一的数据基础架构
只有三分之一的企业发展成为数据驱动型组织。解决方案是什么?在这本电子书中找到答案!

为什么组织需要 ETL?

数据是组织最大的资产之一。大多数有用的数据都是非结构化的,分散在多个来源中。因此,组织需要以 ETL 形式进行数据集成,以收集和标准化数据,并准备在一处进行分析。ETL 确保所有团队都能轻松、统一地访问数据。借助标准化数据,团队可以做出明智的决策,从而获得更好的商业智能。在当前环境下,即使是单一的数据也可以对盈利能力产生很大的影响。组织如果想利用数据的强大功能,应考虑采用 ETL。

ETL 涉及哪些步骤?

顾名思义,ETL 有三个主要步骤 — 提取、转换和加载。

步骤1:提取数据

提取是从多个来源收集数据的过程。这些来源可能包括以下内容。

  • 客户关系管理系统 (CRM)
  • 社交媒体和其他在线资源
  • 原有数据库和存储
  • 销售和营销应用程序
  • 客户交易数据
  • 企业资源规划系统
  • 来自物联网 (IoT) 的传感器数据

数据提取通常以三种不同的方式执行。

基于变更通知的数据提取

某些数据源会在发生任何数据更改时向 ETL 系统提供通知。ETL 系统只需要提取新数据。基于通知的数据提取是最简单的方法,但许多数据源不提供通知。

增量数据提取

一些来源可能无法提供有关数据更改的通知,但是可以识别并记录哪些数据已更改。ETL 系统应定期检查此类来源,以查看数据是否有任何变化。此方法以增量方式提取已更改的数据部分。增量提取比基于通知的提取更为复杂。

完整数据提取

一些来源可能没有任何机制来识别数据中的变化。在处理此类来源时,ETL 需要从源中提取完整的数据。ETL 需要保留最后一次数据提取的副本,以便将其与新副本进行比较。与其他方法相比,完整数据提取涉及的数据传输量更大,因为每次都需要复制整个数据集。它还会增加 ETL 系统的负载。

结构化和非结构化数据

来自上述来源的数据可能是结构化的,也可能是非结构化的。结构化数据已准备就绪,可以立即提取。非结构化数据需要做一些准备才能适合提取。这包括清理数据,例如,删除空格或表情符号。

第 2 步:转换数据

来自不同来源的数据可能具有不同的结构和特征。“转换” 步骤采用多种技术来标准化这些多样化的数据。组织通常在转换数据时应用业务规则。数据转换涉及以下子流程:

标准化

从各种来源提取的数据的格式可能会有很大差异。标准化将数据转换为通用格式。例如,原始数据中的所有零可能会转换为 NULL。

清理

来自社交媒体或电子邮件通信等来源的数据可能包含不相关的信息。一般而言,数据可能存在不一致和缺失值。清理有助于消除数据中的垃圾信息,并修复缺失值和不一致之处。

重复数据消除

来自源的原始数据可能有重复和冗余的信息。重复数据删除消除了所有这些冗余。

格式修订

这包括根据组织的标准将一种格式转换为另一种格式。它可能包括度量单位转换、日期时间转换和字符集转换。

验证

此步骤检查数据完整性。在此步骤中,ETL 系统将识别并标记数据异常。

转换还包括高级数据库操作,如数据聚合、建立键值关系、拆分数据和筛选数据。

步骤 3:加载数据

在 ETL 的最后一步中,转换后的数据将加载到数据仓库或再次加载到另一个数据源中。“加载” 有两种主要方法。

满载

满载时,在 “转换” 步骤中准备的所有数据将作为单个批次加载到数据仓库中。尽管 “满载” 需要很长时间,但没有增量负载那么复杂。满载可能会导致仓库中的数据量呈指数级增长,这可能会变得难以管理。

增量加载

它会查找传入数据中的更改。仅当找到唯一数据时,它才会创建新的数据记录。与满载相比,增量负载更易于管理。然而,如果出现系统故障,可能会导致数据不一致。

组织可以根据想要对数据执行的操作来选择 “加载” 策略。加载的数据可能用于不同的需求。

  1. 在数据之上创建分析或商业智能层
  2. 将数据用作可搜索的数据库
  3. 作为机器学习算法的训练集
  4. 基于数据创建警报系统

数据目标(例如,数据仓库)的特征也需要考虑。目标的速度、容量和数据接口可能会影响加载过程。

现代化您的数据和分析架构
现代化您的数据和分析架构
查看这 13 个使用案例,了解如何支持当今复杂的数据和分析局面。

ETL 工具有哪些类型?

根据要求,组织使用不同类型的 ETL 工具。组织可能会根据需要对数据执行的操作来选择 ETL 类别。

手工编码

一些组织选择不使用任何特定的 ETL 工具。相反,他们选择手动编码方法。在手动编码中,将创建用于执行 ETL 工作流程的自定义脚本。管理和标准化手动编码方法并不轻松。

批量处理工具

这些工具通常在下班时间批量处理数据,以免干扰日常运营。不需要实时 ETL 功能的组织可以依赖批处理工具。

开源工具

有几种开源 ETL 工具在线提供。开源工具是商用 ETL 工具的低成本替代方案。选择使用开源版本的组织应该准备好操作和维护 ETL 工具。可能很少或根本不提供支持。

基于云的工具

如果组织负担不起 ETL 的基础设施,可以考虑使用 ETL 平台即服务。许多公司在云端提供 ETL 服务,可确保全面支持、轻松集成和可扩展性。

实时工具

上面讨论的大多数工具都是非实时工作的。实时 ETL 系统使用连续数据处理从多个来源提取数据并将其存储在仓库中。这些类型的 ETL 工具在处理流数据或物联网用例中来自传感器的数据时非常有用。

ETL 有哪些好处?

整合数据

通常,组织在处理来自多个来源的数据时会遇到困难。来自不同来源的数据在数量、格式和复杂性方面可能有所不同。ETL 将这些数据标准化,并提供数据的单一视角。ETL 使组织能够快速检索和分析数据。它有助于更快做出更好的决策。

历史背景

许多组织都将历史数据存储在原有数据存储系统中。ETL 可以从原有系统中提取数据,并将其与当前数据统一起来。这就为组织提供了可用来识别长期趋势的历史背景。历史背景有助于公司获得有用的洞见并增强商业智能。

效率和生产力

ETL 让团队能够轻松访问数据,从而提高团队的效率。它消除了为数据迁移编写自定义脚本的负担,从而提高了生产力。当数据随时可用时,员工可以做出明智的决策,将更多的时间花在分析上,而减少在价值较低的任务上浪费时间。

实施 ETL 工作流程有哪些挑战?

海量数据

ETL 系统通常设计用于处理特定的传入数据容量。在当前环境下,企业数据正在快速增长。ETL 系统可能无法处理增加的数据量。

解决方案:在实施 ETL 工作流/工具时,组织需要考虑可扩展性。除了选择可扩展的解决方案外,还应避免完全加载数据。组织应识别关键数据,避免使用所有非必要数据。还应考虑并行数据处理。

更改数据格式

各组织应考虑数据格式的动态性质。来自外部源的数据格式可能不同,或者使用的频率完全不同。ETL 系统应该能够处理这种多样性。

解决方案:即使在 “转换” 步骤之前就清理数据对于处理格式更改至关重要。ETL 系统应该能够识别并提醒转换工具注意新格式。此外,ETL 中的转换过程应该是灵活的,而不是基于硬编码规则。

紧密耦合的 ETL 管道

ETL 是一个复杂的系统,包含许多组件和子系统。这些组件中的每一个都应具有可扩展性、功能性和灵活性。通常,组织倾向于为每个组件使用类似的技术和系统。当组织实施 ETL 工作流程时,他们倾向于对所有部分应用类似的解决方案。这产生了紧密耦合、不太灵活的系统。

解决方案:ETL 系统中的每个组件都应视为独立的组件。组织应为每个步骤选择正确的工具。这些组件中的每一个都可能需要高度专业化的解决方案。解耦 ETL 组件可以帮助组织修复或更改任何部分,而不必从头开始重建整个系统。