ETL的34个子系统
2021-03-11 14:38:31 41 举报
解决方案:使用PDI构建开源ETL解决方案 书中写的ETL的34个子系统
作者其他创作
大纲/内容
1.数据清洗是指修改或整理进入到ETL流程中的脏数据2.ETL流程自动给某些常见的错误打标记,如字段为空、不正确的格式或错误的电话号码等3.每周出具数据质量的检查结果
子系统1:数据剖析系统
1.在数据仓库里还要考虑如何构建和维护数据仓库里的层次2.这个子系统的完整的名称是“构建固定的,可变深度的,可有级别缺失的层次维度系统”
子系统28:排序系统
1.慢变更维度(SCDs)是多维数据仓库或者总线架构的基础2.有以下3种缓慢变更维度的方法:覆盖、增加新行、增加新列
这个子系统的目标就是捕获到和ETL相关的所有业务、过程和技术元数据。这个子系统中重要的一部分就是把系统文档化
1.除了缓慢变化维度,基于多维模型的数据仓库,至少都包含一个特殊维度,时间维度2.特殊维度有:杂项维度、小维度、收缩的或上卷的维度、静态维度、用户自定义维度
1.处理不同深度的层次时需要桥接表
1.备份ETL过程中产生的中间数据也应该是ETL方案的一部分。2.Ralph Kimball 推荐在ETL流程中的三个地方缓存(备份)这些数据:1)从源系统中抽取之后,做任何改动之前。2)清洗、排重、更正之后,此时可能还在文本文件中或使用正规化的格式3)已经做完最后处理,可以写入到数据仓库之前。
1.ETL系统应该同时提供血统分析和影响分析功能2.血统分析从处理后的数据开始向后追溯查看这个数据起源于哪里,然后在中间的环节对这个数据进行了哪些处理。3.依赖或影响分析的方向和血统分析相反,即从数据的起源开始,查看哪些步骤或转换使用了这个数据,这样可以显示出如果一个数据或表发生了变化会影响到系统的哪些部分
1.这个子系统负责抽取正确的代理键,用于加载事实表2.因为事实表的加载看起来像一个工序,工序里的每个环节都使用数据的自然键去查找维度表里的代理键
数据仓库里保存了企业所有的数据,也是最容易产生风险的地方。另外在很多情况下,ETL过程可以直接访问到很多源系统,所以ETL解决方案本身也是易被攻击的地方
子系统21:数据整合管理系统
子系统25:版本控制系统
1.目标:捕获源系统里数据的变化当前Kettle 里没有特别的工具可以完成这一功能,但Kettle里的一些步骤可以通过时间戳、快照的方式获得变化的数据
1.加载事实表过程并不是重点,之所以把加载事实表单独作为一个子系统分出来,主要是为了强调如下三种不同类型的事实表:事务粒度事实表、周期快照事实表、累积快照事实表2.这个子系统的全名是“事务粒度、周期快照粒度、累积快照粒度事实表的加载系统”
子系统33:合规报告系统
子系统32:安全系统
子系统14:代理键管道
1.分析不同数据源的结构和内容2.行统计、NULL值个数统计(简单)3.单词模式分析(复杂)Kettle作为其他此类开源项目的入口,通过其他开源项目来做此类统计工作
这个子系统用来从数据仓库获取数据,并把数据发送到其他环境中,通常用于离线数据分析或者其他特殊目的,如给特定客户发送报表
子系统34:元数据资源库管理系统
主题三:数据发布
1.在一些场合下,事实表数据和维度表数据都可能晚到
子系统17:维度管理系统
社区版的Kettle不提供自己的调度功能,而是依赖于Pentaho Bl的调度功能或者操作系统的cron功能。第12章将详细介绍调度和作业日志
26:从开发环境到测试、生产环境的版本移植系统
子系统11:层次维度构建
子系统3:抽取系统
子系统10:代理键生成系统
子系统30:问题报告系统
1.排除重复记录可能是ETL项目中最棘手的问题2.排重是指删除重复的数据,或者把不同系统里互相冲突的数据统一3.大多数情况下,可以采用模糊查询、正则表达式匹配、Soundex函数,以及各种数据挖掘技术来解决填写错误这类问题
1.这个子系统负责任何创建、组织、管理和事实表相关的任务2.子系统17和18在一起结伴工作:事实表管理系统获取到由维度管理系统管理的维度,并把这些维度放到事实表中
主题四:管理
OLAP数据库有特殊的存储结构,当加载的时候,可以预先聚集数据。一些OLAP数据库只能写不能更新,所以,在做更新之前要把源数据清除。其他OLAP数据库(如微软的分析服务器)可以更新事实表,但有它自己的更新机制,Kettle不能使用
子系统12:特殊维度生成系统
1.对于Kettle企业版和社区版都可以使用SVN或CVS这样的版本控制系统2.你需要给ETL系统里的每个部分都确定一个主版本号,另外ETL系统作为一个整体也要有一个主版本号。这样如果今天发布的版本发生严重的错误,可以快速恢复到昨天的ETL版本
ETL的34个子系统
1.目的就是使来源于多个业务系统的事实数据遵照相同的维度
子系统8:数据一致性
对于一些操作(如分组、排序合并操作),数据事先要进行排序。当然,Kettle有一个“排序”步骤,这个步骤在内存里操作,但如果数据太大了会在硬盘上分页。对于非常大的文件,可以需要独立的排序工具
子系统13:事实表加载
子系统31:并行/管道系统
1.静态抽取2.动态抽取
子系统19:聚集构建
万一运行中出了错误(相信我们,肯定会出错的),你需要尽快知道运行中发生了错误
子系统5:错误事件处理
子系统6:审计维度
子系统18:事实表管理系统
子系统20:OLAP Cube构建系统
主题一:抽取
子系统24:恢复和重新启动系统
1.如果数据库是用于分析的,一定会有性能方面的要求。这种对速度的要求产生了几种解决方案,在这几种方案里,聚集表对性能的提升最大
子系统9:缓慢变更维度处理
子系统23:备份系统
1.为了能在短时间内处理大量数据,任务应该可以并行运行,甚至在多台机器上同时运行。2.Kettle集群可以动态扩展(如晚上ETL任务工作的时候),也可以在不需要的时候关闭(如作业运行完)
子系统15:多值维度桥接表生成系统
子系统29:血统和依赖分析
子系统2:增量数据捕获系统
主题二:清洗和更正
审计维度表是一类特殊的维度表,数据仓库里的所有事实表都和审计维度表关联,审计维度表包含了对事实表变更的元数据,如加载数据的日期和时间、数据的质量指标等
子系统16:迟到数据处理
1.错误事件处理的目的是记录下ETL过程中的每一个错误。这样便于管理员定期监控和分析错误,是数据质量错误,还是系统错误或其他错误Kettle有很多现成的功能来处理错误事件日志
子系统4:数据清洗和质量处理系统
确保一个ETL流程遵照规章制度,所需要的大多数方法已经在其他子系统中涉及到了。合规意味着要对数据进行详细的审计,审计包括数据从哪里来,在数据上面执行了什么操作(血统),数据在写入到数据仓库之前是什么样子(基于时间戳的备份),在每个时间点的值是什么(审计表,SCD 2),谁访问了数据(日志)。Data Vault是一种提供了很好审计功能的数据模型,在第19章介绍
1.监控过程监控运行过程,显示执行作业的执行细节,已经处理了多少行,处理的速度有多快?消耗了多少内存?哪条记录出错了,为什么出错?2.Kettle里,日志框架就是监控过程
子系统7:排除重复记录系统
子系统27:工作流监控
ETL设计的一个重要部分就是在ETL失败时,可以重新启动。我们要尽量避免丢失数据和重复数据的情况,所以这个子系统非常重要
1.这个子系统用来准备和向数据仓库发布正确的维度。不只是组织,还负责管理所有和维度相关的任务
子系统22:作业调度
收藏
收藏
0 条评论
下一页