最近在看《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:元数据资源库管理系统

  

ETL子系统的更多相关文章

  1. ETL定义、四大模块及子系统说明

    ETL定义.四大模块及子系统说明 ——<Pentaho Kettle解决方案>读书笔记 罗小川 目前公司正在进行数据仓库的建设的前期需求整理和项目启动阶段,想简单来谈一下自己对目前公司在用 ...

  2. [目录]Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案

    第一部分:开始 1         ETL入门 1.1   OLTP和数据仓库对比 1.2   ETL是什么 1.2.1          ETL解决方案的演化过程 1.2.2          ET ...

  3. DataPipeline CTO陈肃:从ETL到ELT,AI时代数据集成的问题与解决方案

    引言:2018年7月25日,DataPipeline CTO陈肃在第一期公开课上作了题为<从ETL到ELT,AI时代数据集成的问题与解决方案>的分享,本文根据陈肃分享内容整理而成. 大家好 ...

  4. Kettle解决方案: 第五章 ETL相关知识

    早期, ETL知识作为BI系统的一部分来介绍. 后来在The Data Warehouse ETL Tooket一书中, 系统性的整理了ETL的相关内容, 形成了一篇"ETL里的34个子系统 ...

  5. 《数据仓库ETL工具箱》读书笔记

    在本书中,你将学习到以下内容: 规划&设计你的ETL系统 从多种可能的架构中选出最合适的 对实施过程进行管理 管理日常的操作 为ETL过程建立开发/测试/生产环境 理解不同的后台数 ...

  6. 设计和开发ETL系统(一)——ETL过程综述

    在这部分将按照设计和实现ETL系统的流程展开,将上一个部分的那些子系统按照提取数据.清洗和一致化.向呈现服务器提交以及管理ETL环境等四个方面进行了分类.(是不是说对ETL主要就是掌握这四个方面的内容 ...

  7. 抽取、转换和装载介绍(七)管理ETL环境(待续)

    数据仓库的目标之一是能够为增强业务功能提供适时的.一致的和可靠的数据. 为了达到上述目标,ETL必须按照下述三条标准不断地加以完善: 可靠性 可用性 易管理性 子系统22--作业调度器 子系统23-- ...

  8. 抽取、转换和装载介绍(三)ETL系统的34个子系统

    这部分对ETL系统的架构中34个关键子系统进行分类.ETL其实可以分为下面四个步骤: 抽取.在ETL环境中从源系统收集原始数据并且在对任何对数据的重要重构发生之前都将数据写入磁盘.子系统1到子系统3都 ...

  9. Atitit.软件仪表盘(0)--软件的子系统体系说明

    Atitit.软件仪表盘(0)--软件的子系统体系说明 1. 温度检测报警子系统 2. Os子系统 3. Vm子系统 4. Platform,业务系统子系统 5. Db数据库子系统 6. 通讯子系统 ...

随机推荐

  1. 关于Java运行机制

    目录 编译型语言与解释型语言的区别 编译型语言 解释型语言 细数两者之差别 Java的奇怪之处 Java的编译 Java的解释 具体机制 Java既是编译型语言,也是解释型语言. 首先先查找关于两种语 ...

  2. 2019-9-29,php基础学习,笔记

    cobalt strike简单使用cobalt是一个后渗透测试工具,基于java开发,适用于团队间协同作战,简称"cs"cs分为客户端和服务端,一般情况下我们称服务端为团队服务器, ...

  3. word2vec:主要概念和流程

    1.单词的向量化表示 一般来讲,词向量主要有两种形式,分别是稀疏向量和密集向量. 所谓稀疏向量,又称为one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的 ...

  4. Android利用碎片fragment实现底部标题栏(Github模板开源)

    在安卓开发当中,一个十分重要的布局则是底部标题栏了,拥有了底部标题栏,我们就拥有了整个软件UI开发的框架,一般而言,整个软件的布局首先就是从底部标题栏开始构建,然后再开始其他模块的编写,组成一个完善的 ...

  5. linux命令之less命令

    一.我查看日志特别喜欢用less命令来查看,下面给大家讲解下使用. less(选项)(参数) 选项如下: -e:文件内容显示完毕后,自动退出: -f:强制显示文件: -g:不加亮显示搜索到的所有关键词 ...

  6. 使用 colgroup 和 col 实现响应式表格

    Table 在项目使用中十分频繁,特别是在后台管理系统中,table 无疑是数据展示的第一公民,在早些年的网页中,table 也是网页布局的第一选择,然后使用好 table 并不容易,其它有很多子元素 ...

  7. 配置aria2

    Mac 用户肯定都受够了百度网盘在自己电脑上的糟糕体验,至少我是如此:安装官方的 App,经常下载时中断,有时甚至 Bug 般连续中断,无奈使用浏览器下载,速度却是令人挠头.花点时间来配置 aria2 ...

  8. 这是一个测试 hello world

    第一次写博客,冒着生命危险尝试一下,发说说 搞了半天,发现原创文章在随笔发,我以为在文章目录发,白白在文章那里建了分类,太难了吧我

  9. elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法

    Bug描述: 今天做开发时遇到一个elementUI存在的bug. 当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配 ...

  10. jquery.countdown 倒计时插件的学习

    1.第一种简单的使用 第一个时间是你的倒计时截止时间,finalDate格式可以是YYYY/MM/DD MM/DD/YYYY YYYY/MM/DD hh:mm:ss MM/DD/YYYY hh:mm: ...