ETL子系统

  最近在看《Pentaho Kettle 解决方案》,看到 ETL子系统,发现信息量比较大,用简短的语句做一下笔记。

  ETL子系统有34种子系统,被分成4个部分:抽取、清洗和更正、发布、管理。

一、抽取

 子系统1:数据剖析系统

  指从不同源系统中搜集数据的统计信息或其他相关信息的过程,目的是分析不同数据源的结构和内容。

 子系统2:增量数据捕获系统

  目的是捕获系统里的数据的变化。由于数据量大以及网络的延迟,数据完成初始加载后,不应再把数据重新加载一边,为了识别出有变化或更新的数据,增加时间戳或快照的方式。

 子系统3:抽取系统

  从不同数据源抽取数据,并输入到ETL流程里。

二、清洗和更正

  几乎没有什么数据是不存在问题的,因此数据加载到数据仓库之前要增加一些步骤来清洗和更正这些数据。另外,每个系统存储数据得方式不同,比如有些数据源里,性别表示为 0,1;有些数据源里用“男”,“女”表示,存进数据仓库里面应该有统一的规范。

 子系统4:数据清洗和质量处理系统

  这个过程主要是修改和整理进入到 ETL 流程的脏数据,提高数据的质量。

 子系统5:错误事件处理

  错误事件处理的目的是记录下 ETL 过程中的每一个错误。这样便于管理员定期监控和分析错误。

 子系统6:审计纬度

  审计维度表是一类特殊的维度表,数据仓库里的所有事实表都和审计纬度表关联。它包含了事实表变更的元数据,如加载数据的日期和时间等。

 子系统7:排查重复记录系统

  在大多数情况下,排重是指删除重复的数据,或者把不同系统相互冲突的数据统一。

 子系统8:数据一致性

  这个步骤的目的是使来源于多个业务系统的事实数据遵照相同的纬度。例如,A公司有一个客服系统,该系统有自己的客户数据库,为了把客服管理系统和销售系统放在同一个数据仓库里,需要把客服管理系统的客户数据和销售系统的客户数据统一成一个客户维度表,当分别加载来自这两个系统的事实数据时,需要把来自两个系统的事实数据只想同一个客户维度表。解决这个问题最常用方法就是维度表中保留从不同系统带来的自然键。在加载数据时,可以查找维度表中的这些源系统中的自然键。

三、数据发布

 子系统9:缓慢变更纬度处理

  当业务系统里的数据有所改变,缓慢变更维度的过程就需要根据不同的规则来变更数据仓库的纬度。一般有三种缓慢变化维。

  缓慢变化类型一:不记录历史数据,新数据覆盖旧数据

  缓慢变化类型二:保存多条记录,直接新添一条记录,同时保留原有记录,并用单独的专用的字段保存区别

  缓慢变化类型三:添加历史列,用不同的字段保存变化痕迹.它只能保存两次变化记录.适用于变化不超过两次的维度

 子系统10:代理键生成系统

  代理键用于标识维度表的一行,在加载维度表和事实表的时候需要查询代理键。代理键的生成一般有:1、使用表里现在代理键的最大值+1;2、使用数据库序列;3、使用一个自增字段。

 子系统11:层次维度构建

  在数据仓库里还要考虑如何构建和维护数据仓库里的层次。层次可以让用户分析查看维度不同级别上的数据。最简单的层次概念就是时间维度的层次,例如“年-季-月-日”这样的层次。

 子系统12:特殊维度生成系统

  除了缓慢变化维度,基于多位模型的数据仓库,至少都包含一个特殊维度:时间维度。当然还有其他特殊维度,这里不列举。

 子系统13:事实表加载

  在往数据仓库加载事实表之前,需要把数据准备好。事实表主要有三种类型:

  1、事实粒度事实表:以每一个事务或者事件为单位,例如一个销售记录;

  2、周期快照事实表:事实表里并不保存全部数据,只保存固定时间间隔的数据,例如每月的消费记录;

  3、累积快照事实表:当有新的数据时,更新事实表里的记录。

 子系统14:代理键管道

  这个子系统负责抽取正确的代理键,用于加载事实表。

 子系统15:多值维度桥接表生成系统

  当有多个维度项和事实表或其他维度表关联时,也要使用桥接表。例如电影票和演员。如果想汇总一个演员有多少电影票收入,需要在电影和电影演员维度之间建立一个桥接表,桥接表还可以设置电影演员的权重因子。

 子系统16:迟到数据处理

  事实表数据和维度表数据都有可能晚到。对于事实表来说不是大问题,课根据维度的有效时间查找业务发生时的维度代理键。如果维度表数据晚到,情况就会稍微麻烦一些,若事实表数据加载完了但维度表的数据不是最新的。当要更新的维度数据过来后,会在维度表里增加一条记录,此时要使用新创建的维度的代理键来更新事实表里有上一个代理键的数据。(说实话这一段没怎么看得懂......)

 子系统17:维度管理系统

  中心控制系统,用来准备额向数据仓库发布正确的维度。

 子系统18:事实表管理系统

  负责任何创建、组织、管理和事实表相关的任务。

 子系统19:聚集构建

  如果数据库是用于分析的,一定会有性能方面的要求。这种对速度的要求产生了几种解决方案,在这些解决方案里,聚集表对性能的提升最大。

 子系统20:OLAP Cube构建系统

  OLAP数据库有特殊的存储结构,当加载的时候可以预先聚集数据。一些OLAP数据库只能写不能更新,所以在做更新之前要把源数据清楚。

 子系统21:数据整合管理系统

  用来从数据仓库获取数据,并把数据发送到其他环境中,通常用于离线数据分析或者其他特殊目的,如给用户发送报表。

四、管理

 子系统22:作业调度

 子系统23:备份系统

 子系统24:恢复和重新启动系统

 子系统25:版本控制系统

 子系统26:从开发环境到测试、生产环境的版本移植系统

 子系统27:工作流监控

 子系统28:排序系统

 子系统29:血统和依赖分析 

 子系统30:问题报告系统

   子系统31:并行/管道系统

   子系统32:安全系统

   子系统33:合规报告系统

   子系统34:元数据资源库管理系统

  

posted @ 2019-08-26 10:55 Max_Lyu 阅读(...) 评论(...) 编辑 收藏