最近在看《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. C语言之路

    C 简介 C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的.C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现. 在 1978 ...

  2. python基础-面向对象编程之封装、访问限制机制和property

    面向对象编程之封装 封装 定义:将属性和方法一股脑的封装到对象中,使对象可通过"对象."的方式获取或存储数据. 作用:让对象有了"."的机制,存取数据更加方便 ...

  3. 关于C# 语言

    C# 语法高度重视表达,但学习起来也很简单轻松. 任何熟悉 C.C++ 或 Java 的人都可以立即认出 C# 的大括号语法. 通常情况下,了解上述任何一种语言的开发者可以在很短的时间内就开始使用 C ...

  4. 闲来无事写了一套 Jenkins 主题样式:刀锋

    背景 Jenkins 的前端 CSS 样式坚挺了这么多年已经觉得腻的不行了,于是想换个风格缓解一下视觉疲劳,便有了这个项目.由于本人不是前端,所以很多只是随便改改,有些复杂的需求也实现不了,但是总的来 ...

  5. css三大特效之层叠性

    css三大特效之层叠性

  6. Crontab爬虫定时执行

  7. Python3学习-基础

    1.直接运行.py文件 在Windows上是不行的,但是在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释: #!/usr/bin/env python3 print('he ...

  8. easyui textbox 赋值

    $('#fireInfo').textbox('setValue', tempData.fireInfo); $('#fireStartTime').datetimebox('setValue', t ...

  9. 【Android - 自定义View】之View的draw过程解析

    draw(绘制)过程的作用是将View绘制到屏幕上面.View中有 draw() 方法和 onDraw() 方法,但onDraw()方法是空方法:ViewGroup中没有draw()方法,也没有onD ...

  10. 利用tp5开发智慧软文发布系统中遇到的一些坑

    1. PHP 计算两个时间戳之间相差的时间 假设你两个时间戳为$a,$b; 你可以用$c=$a-$b;(反正就是大的减小的),这时$c就是两个时间间隔的秒数了. 想求两个时间间隔的天数就用:$c/(6 ...