目录
- ETL是什么?
- 为什么需要ETL?
- 数据仓库中的ETL处理
- 步骤1)提取
- 步骤2)转换/清洗
- 步骤3)加载
- ETL工具
- ETL最优实践流程
ETL是什么?
ETL被定义为一个从不同RDBMS源系统中提取数据,然后转换数据(如应用计算、连接等),最后将数据加载到数据仓库的过程。ETL的全流程是提取、转换和加载。
人们很容易认为创建数据仓库就是简单地从多个数据源提取数据并加载到数据仓库的数据库中。这与事实相去甚远,需要一个复杂的ETL过程。ETL过程需要来自各种研发人员的积极投入,包括开发人员、分析人员、测试人员、高层管理人员,并且在技术上具有挑战性。
为了维护数据仓库作为决策工具的价值,数据仓库系统需要随着业务的变化而变化。ETL是数据仓库系统的一个重复活动(每日、每周、每月),必须具备高度敏捷、自动化和良好的文档化。
为什么需要ETL?
在企业和组织中采用ETL有很多原因:
- 它帮助公司分析业务数据,以便做出关键的业务决策。
- 事务数据库不能回答ETL可以回答的复杂业务问题。
- 数据仓库提供公共数据存储库
- ETL提供了一种将数据从各种数据源移动到数据仓库的方法。
- 随着数据源的更改,数据仓库将自动更新。
- 良好的设计和文档化的ETL系统对于数据仓库项目的成功几乎是必不可少的。
- 允许验证数据转换、聚合和计算规则。
- ETL过程允许源系统和目标系统之间的样本数据比较。
- ETL进程可以执行复杂的转换,并且需要额外的区域来存储数据。
- ETL帮助将数据迁移到数据仓库。转换为各种格式和类型,以坚持一个一致的系统。
- ETL是一个预定义的过程,用于访问和操作源数据到目标数据库。
- ETL为业务提供了深刻的历史背景。
- 它有助于提高生产力,因为它不需要技术技能就能进行编码和重用。
数据仓库中的ETL处理
ETL是一个3步的过程
步骤1)提取
在此步骤中,数据从源系统提取到暂存区域。如果在暂存区域进行转换,则源系统的性能不会降低。此外,如果损坏的数据直接从源复制到数据仓库数据库,回滚将是一个挑战。Staging area提供了一个功能,可以在提取的数据转移到数据仓库之前对其进行验证。
数据仓库需要集成具有不同功能的系统
数据库管理系统,硬件,操作系统和通信协议。来源可以包括历史应用程序(如大型机)、定制应用程序、接触点设备(如ATM)、呼叫交换机、文本文件、电子表格、ERP、来自供应商和合作伙伴的数据等。
因此,在提取和转换加载数据之前,需要一个逻辑数据映射。此数据映射描述源和目标数据之间的关系。
三种数据提取方法:
- 完整提取
- 部分提取-没有更新通知。
- 部分提取-带有更新通知
无论使用何种方法,提取都不应影响源系统的性能和响应时间。这些源系统是实时的生产数据库。任何减速或锁定都可能影响公司的利润。
一些验证是在提取过程中完成的:
- 平衡记录与源数据
- 确保没有垃圾邮件/不需要的数据加载
- 数据类型检查
- 删除所有类型的重复/碎片数据
- 检查所有的关键点是否都到位
步骤2)转换/清洗
从源服务器提取的数据是原始的,不能以原始形式使用。因此,需要对其进行清洗、映射和转换。实际上,这是ETL流程增加价值和更改数据的关键步骤,以便生成有洞察力的BI报告。
在此步骤中,您将对提取的数据应用一组函数。不需要任何转换的数据称为直接移动或通过数据。
在转换步骤中,可以对数据执行定制操作。例如,如果用户希望销售收入的总和不在数据库中;或者表中的姓和名在不同的列中,可以在加载之前连接它们。
以下是数据完整性问题:
- 同一个人的不同拼写,如Jon, John等。
- 表示公司名称有多种方法,如谷歌,谷歌Inc。
- 使用不同的名字,比如克利夫兰,克里夫兰。
- 可能存在这样一种情况:不同的应用程序为同一个客户生成了不同的帐号。
- 在一些数据中,需要的文件保持空白
- 在POS处手工录入的无效产品可能会导致错误。
在此阶段完成数据校验
- 筛选——只选择要加载的某些列
- 使用规则和查找表进行数据标准化
- 字符集转换和编码处理
- 度量单位的转换,如日期时间转换、货币转换、数值转换等。
- 数据阈值验证检查。例如,年龄不能超过两位数。
- 从登台区域到中间表的数据流验证。
- 必填字段不应留空。
- 清理(例如,将NULL映射为0或将性别男性映射为“M”,将女性映射为“F”等)
- 将一列拆分为多个列,并将多个列合并为一列。
- 转置行和列,
- 使用查找来合并数据
- 使用任何复杂的数据验证(例如,如果一行的前两列为空,则自动拒绝处理该行)
步骤3)加载
将数据加载到目标数据仓库是ETL过程的最后一步。在典型的数据仓库中,需要在相对较短的时间(夜间)内加载大量数据。因此,负载过程应该根据性能进行优化。
在负载失败的情况下,应该将恢复机制配置为从故障点重新启动,而不会丢失数据完整性。数据仓库管理员需要根据当前服务器的性能监视、恢复和取消负载。
加载类型:
- 初始加载——填充所有数据仓库表
- 增量负载——当需要周期性地应用正在进行的更改。
- 完全刷新——删除一个或多个表的内容,并用新数据重新加载。
加载验证:
- 确保键字段数据既不丢失也不为空。
- 基于目标表测试建模视图。
- 检查值和计算方法的组合。
- 在维度表和历史表中检查数据。
- 检查加载的事实和维度表上的BI报告。
数据仓库工具
市场上有很多数据仓库工具。以下是一些最著名的例子:
1. MarkLogic:
MarkLogic是一种有用的数据仓库解决方案,它使用一系列企业特性使数据集成更容易、更快。该工具有助于执行非常复杂的搜索操作。它可以查询不同类型的数据,如文档、关系和元数据。
http://developer.marklogic.com/products
2. Oracle:
Oracle是业界领先的数据库。它为现场和云中提供了广泛的数据仓库解决方案选择。它有助于通过提高运营效率来优化客户体验。
https://www.oracle.com/index.html
3.Amazon RedShift:
Amazon Redshift是一个数据仓库工具。使用标准SQL和现有BI工具分析所有类型的数据是一种简单而经济的工具。它还允许使用查询优化技术对pb级的结构化数据运行复杂的查询。
https://aws.amazon.com/redshift/?nc2=h_m1
ETL最优实践流程
永远不要尝试清除所有数据:
每个组织都希望所有的数据都是干净的,但是大多数组织都不愿意花钱去等待或者不愿意等待。要全部清除它将花费太长时间,所以最好不要尝试清除所有数据。
从不清理所有数据:
总是计划清理一些东西,因为构建数据仓库的最大原因是提供更干净、更可靠的数据。
确定清理数据的成本:
在清理所有脏数据之前,确定每个脏数据的清理成本是非常重要的。
为了加快查询处理,建立辅助视图和索引:
为了降低存储成本,将汇总的数据存储到磁盘中。此外,还需要在要存储的数据量和其详细用法之间进行权衡。在数据粒度级别进行权衡,以降低存储成本。
总结:
- ETL是Extract, Transform和Load的缩写。
- ETL提供了一种将数据从各种数据源移动到数据仓库的方法。
- 在第一步提取中,数据从源系统提取到staging area。
- 在转换步骤中,将清洗和转换从源中提取的数据。
- 将数据加载到目标数据仓库是ETL过程的最后一步。
文章说明:
本文翻译自国外技术文章:https://www.guru99.com/etl-extract-load-process.html
本文为九五青年博客翻译,如需转载请在下面留言,原文如有版权问题,在下面留言板反馈,我们会第一时间处理