ETL定义、四大模块及子系统说明
ETL定义、四大模块及子系统说明
——《Pentaho Kettle解决方案》读书笔记 罗小川
目前公司正在进行数据仓库的建设的前期需求整理和项目启动阶段,想简单来谈一下自己对目前公司在用的ODS的kettle ETL的理解,针对日常运维中遇到的问题结合本书介绍的ETL子系统的建立可以更好的解决目前我们公司ODS系统的运维和运行效率问题,同时对后期数仓ETL的整体设计和四大组建进行梳理,笔记中有些内容直接引用原书。
一、什么是ETL
ETL: 抽取、转换和加载。将数据从OLTP系统中转移到数据仓库中的一系列操作的集合。
抽取:一般抽取过程需要连接到不同的数据源,以便为随后的步骤提供数据。这一部分看上去简单而琐碎,实际上它是ETL解决方案成功实施的一个主要障碍。
转换:在抽取和加载之间,任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面一些操作:
1.移动数据
2.根据规则验证数据
3.数据内容和数据结构的修改
4.集成多个数据源的数据
5.根据处理后的数据计算派生值和聚集值
加载:将数据机载到目标系统的所有操作。加载并不仅仅是将数据批量装载到目标表。加载过程还包括对代理键的管理和对维度表的管理等。
ELT(抽取、加载和转换)同ETL在数据整合的方法上略微不同。ELT下,数据首先从数据源进行抽取,加载到目标数据库中,再转换为所需要的格式。所有大数据量处理全部放在目标数据库中进行。这样做的好处在于,一般情况下,数据库系统更适合处理负载在百万级以上的数据集成。数据库系统也通常会对I/O(吞吐量)进行优化,用来提高数据处理速度。
数据模型:星型模型,每一个维度都是一个单独的维度表。除了日期和时间维,其它每个维表都使用自增列作为代理主键。
二、ETL系统的四大模块及34个子系统
ETL系统的四大块:抽取、清洗和更正、发布、管理。发布不仅仅是把数据写入到目标数据库中,也包括把数据写入到维度表或事实表中的那些转换。管理是对企业信息基础架构的管理。
ETL子系统被重构为34种子系统:
一、抽取
1. 数据剖析系统:目标是分析不同数据源的结构和内容。
2. 增量数据捕获系统:目标是捕获系统里数据的变化。
3. 抽取系统:从不同的数据源抽取数据,并输入到ETL流程里。
二、清洗和更正数据
4. 数据清洗和质量处理系统
5. 错误事件处理
6. 审计维度:审计维度表是一类特殊的维度表,数据仓库里所有的事实表都和审计维度表关联,审计维度表包含了对事实表变更的元数据,加载数据的日期和时间、数据的质量指标等。
7. 排除重复记录系统
8. 数据一致性:使来源于多个业务系统的事实数据遵照相同的维度。
三、数据发布:不仅是将数据插入到目标数据库那么简单。还要生成代理键、查询正确的维度键、加载事实数据。
9. 缓慢变更维度处理:几种缓慢变更维度方法:覆盖、增加新行、增加新列、增加一个小维度表、分离历史表、混合型。
10. 代理键生成系统
11. 层次维度构建:层次可以让用户分析查看维度不同级别上的数据。
12. 特殊维度生成系统:时间维度、杂项维度(垃圾维度)、小维度、收缩的或上卷的维度、静态维度(小的字典表或参照表)、用户自定义维度。
13. 事实表加载:事务粒度加载表、周期快照事实表、累积快照事实表。
14. 代理键管道:负责抽取正确的代理键,用于加载事实表。
15. 多值维度桥接表生成系统:处理不同深度的层次时或有多个维度项和事实表或其他维度表关联时。
16. 迟到数据处理:事实表和维度表数据都可能晚到。维度表迟到会比较麻烦。
17. 维度管理系统:中心控制系统,用来准备和向数据仓库发布正确的维度。
18. 事实表管理系统:负责任何创建、组织、管理和事实表相关的任务。
19. 聚集构建:聚集表能大幅提升性能,但需要维护聚集表。
20. OLAP Cube构建系统
21. 数据整合管理系统:从数据仓库获取数据,并把数据发送到其他环境中,通常用于离线数据分析或其他特殊目的,如给特定客户发送报表。
四、管理ETL环境
22. 作业调度
23. 备份系统。三个地方:1.抽取之后,改动之前;2.清洗、排重、更正之后;3.已经做完最后处理,写入数据仓库之前。通常数据仓库本身备份不是ETL工作。
24. 恢复和重新启动系统。
25. 版本控制子系统
26. 从开发环境到测试、生产环境的版本移植系统。
27. 工作流监控
28. 排序系统:分组、排序合并
29. 血统和依赖分析:提供血统分析和影响分析功能。
30. 问题报告系统
31. 并行/管道系统:任务的并行或在集群上执行。
32. 安全系统
33. 合规报告系统
34. 元数据资源库管理系统:目标是捕获到和ETL相关的所有业务、过程和技术元数据。重要的一部分就是系统文档化。
以上34个配套子系统的建立对公司ETL系统的管理会更加精确、并易于维护人员的日常管理。在新的数仓建设的ETL过程中,我们会加强对ETL功能子系统的建设和标准要求,提升公司整体数据治理的规划性和数据准确性。