数据是当今大多数应用程序的关键驱动力。所有数据(从简单的应用程序日志和系统指标到用户数据)都是可用于数据分析的可量化数据。随着大数据、分析和数据科学的日益普及和实施,数据的重要性急剧上升。
ETL 是提取、转换和加载的缩写,是聚合来自多个不同源的数据、对其进行转换以适应业务需求,最后将其加载到指定目的地(存储位置)的过程。
随着 1970 年数据库的日益普及,ETL 被引入作为加载数据以进行计算和分析的过程。然而,ETL 现在已经发展成为数据仓库和数据湖项目处理大量数据的主要方法。因此,ELT 已成为组织数据策略的重要因素。
在组织中采用 ETL 的主要目标是:
创建各种格式和多个位置的数据的综合视图。
简化审核流程,从而做出更好的业务决策。
让我们在本文中更深入地了解 ETL。
提取、转换和加载基础知识
ETL 由三个组件组成:
提炼
转换
加载
这些组件或任务中的每一个都代表 ETL 管道的一个单独功能。在本节中,我们将深入研究这些组件的确切功能。
这是 ETL 过程的第一步。提取过程的基本工作流程是从不同位置复制或导出原始数据并将其存储在暂存位置以供进一步处理。在那里,提取原始数据的位置被称为源或源位置。来源可以包含任何类型的结构化或非结构化数据,例如:
SQL 或 NoSQL 服务器
平面文件
电子邮件
网页
日志
CRM和ERP系统
指标
电子表格
根据典型提取阶段的来源,可能无法精确定位数据子集。因此,作为一般规则,会提取更广泛的数据,以确保收集所有所需的数据。
在处理用户可能知道其内容的新数据集时,这也是一个关键因素,因为它将是对广泛数据进行探索性分析的理想选择。数量和数据源取决于要求和组织需求。
提取可用于处理数千字节到数兆字节的数据,并且可以在几分钟到几天之间变化,也可以是实时过程。
常见的数据提取方法
让我们看看常见的数据提取方法。
部分提取(带更新通知)
该方法基于通知策略,其中当源位置中的记录或数据集被修改时,系统提供更新通知以执行提取过程。
这是最简单的提取方法。
部分提取(无更新通知)
某些来源将无法提供更新通知,但它们将能够指示更新的记录或数据。在这种情况下,该过程将:
间歇性查询数据源
识别提取过程的更新数据
全提取
仅当系统无法识别更新数据时才需要完全提取。在这些情况下,唯一的选择是重新加载整个数据集。但是,此方法只能用于小型数据集,因为它可能是一个耗时且资源密集的过程。
提取注意事项
在任何提取方法中,我们都要保证不会影响底层系统的性能。例如,假设从生产数据库中提取会导致不利的性能问题,从而阻碍整体应用程序性能。在这种情况下,应通过不同方式执行提取,例如生产数据库的只读副本。
ETL:什么是转换?
这是ETL过程的转换阶段。在那里,从各种来源和暂存区域(临时存储)中提取的数据经过数据处理阶段进行转换,以便可用于分析。本质上,这会将原始数据转换为更有针对性和更有意义的数据集。
此数据转换过程可以由多个任务组成,这些任务将用于应用不同类型的数据转换。
清理和标准化可以解决不一致、缺失值、删除不必要的数据,并将数据格式化为标准化格式,例如特定的日期时间格式、数字格式等。
验证和确认验证原始数据是否包含所需信息,同时删除不可用的数据并识别数据异常。
过滤和排序根据特定要求(例如类型、字段、值等)组织数据。
重复数据删除会丢弃或排除处理冗余数据。
除了这些任务之外,转换过程还可能涉及高级功能,例如:
数据审计以确保数据质量和合规性。当与个人身份信息 (PII) 交互时,这非常有用,可确保仅处理所需且经过批准的数据。
数据加密和保护。在这些情况下,某些数据集需要加密和保护,以确保合规性。转换进程负责执行这些职责。
对原始数据进行计算、翻译。这包括从现有数据集计算全新字段、将数据翻译为不同语言、更改行标题和列标题等任务。
格式化、连接或分割数据以匹配目标分析或存储系统的内部或现有模式。
ETL:什么是负载?
这是 ETL 过程的最后一步,涉及将转换后的数据加载到其最终目的地。目标的范围可以从简单的数据库到大型数据仓库,具体取决于:
基础数据的大小和复杂性
总体组织要求
加载过程可以分为全量加载和增量加载两种。
通常,完整加载过程仅在第一个数据加载任务时发生,以使用所有可用数据填充目标。只有在那之后,才会发生加载更新数据的增量加载。这些增量可以是:
流式增量处理定期更新的少量数据
批量增量处理大量数据
唯一需要完全加载的其他实例是灾难恢复或迁移目标数据源。
ETL 流程的好处
提供标准化流程来聚合和转换行数据并存储转换后的数据以供进一步分析。
通过引入自动化数据处理管道来收集和格式化数据,从而促进高效的数据分析,而无需将数据转换任务转移到其他 BI 或分析工具。
处理大数据并实现高级数据分析和清理。
轻松获取组织的深厚历史背景并促进影响分析。
通过 ETL 管道更轻松地利用AI 和 ML 工具,以提高分析过程的准确性和有效性。
快速适应不断变化的技术和集成需求。
ETL 支持数据仓库和数据湖
组织需要存储和分析由历史数据组成的大型数据集,并具有足够的可扩展性来支持不断增长的数据需求。因此,数据仓库已成为普遍做法。主要云服务提供仓储服务,例如AWS Redshift和Google BigQuery。
然而,数据复杂性的增加以及支持多种数据源的需求不断增长催生了数据湖。这些数据湖远远超过了数据仓库的能力,允许用户存储任何规模的所有结构化或非结构化数据。
(比较数据湖和数据仓库的用例。)
在这两种情况下,ETL 提供了理想的框架来从不同来源提取数据、转换数据,然后将其存储在适当的存储服务中。
用户可以自由地实施 ETL 来支持他们的确切需求,因为 ETL 不绑定到特定的技术或系统。由于需要保持数据最新,ETL 提供了理想的解决方案来创建可用于聚合来自多个源的数据的数据摄取管道。组织可以使用数据仓库或带有 ETL 管道的数据湖创建一个统一的信息库,以满足其所有分析需求。
ETL 工具和服务
当我们处理数据时,任何数据服务(例如数据库、数据仓库或数据湖)都可以被视为 ELT 过程的一部分,无论是在提取还是加载阶段。然而,在创建 ETL 管道时从头开始构建管道可能是一个复杂的过程。因此有一些专门的工具和服务来简化这个过程。
Azure 数据工厂。完全托管的无服务器数据集成服务,可用于创建 ETL 管道。
AWS 胶水。基于 AWS 的托管无服务器数据集成服务,支持可视化和基于代码的界面。
足够了。基于云的可扩展 ETL 服务,用于创建 ETL 管道。
赫沃。用于创建实时数据集成管道的无代码数据管道平台。
马蒂利恩。云数据集成和转换平台具有全面的工具集,可创建满足任何企业需求的 ETL 管道。
ETL总结
在这篇文章中,我们了解了 ETL 或提取、转换和加载过程的基础知识。 ETL 是大多数现代数据摄取和集成管道的支柱,可促进准确、高效的分析。未来,随着对数据的前所未有的需求,ETL 的重要性只会越来越大。