最近在看《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. python3基础之 字符串切片

    一.python3中,可迭代对象有:列表.元组.字典.字符串:常结合for循环使用:均可使用索引切片 实例: str = ' #str[start:stop:step] 遵循[左闭右开]规则 prin ...

  2. Dart Learn Notes 02

    Functions Dart是一门面向对象的语言,所以即便是方法也是一个对象,它的类型是Function. 这就意味着方法可以指向变量,也可以作为方法中的参数供其他方法使用.甚至可以让 一个类作为一个 ...

  3. Windows Server 2008 服务器重启后卡死在Windows Update 页面问题处理

    Windows Update 服务器 服务器是联想RD640 操作系统Windows Server 2008 R2 Enterprise版 补丁版本是SP1 远程windows服务器时,一直处于远程建 ...

  4. kubernetes实战(二十九):Kubernetes RBAC实现不同用户在不同Namespace的不同权限

    1.基本说明 在生产环境使用k8s以后,大部分应用都实现了高可用,不仅降低了维护成本,也简化了很多应用的部署成本,但是同时也带来了诸多问题.比如开发可能需要查看自己的应用状态.连接信息.日志.执行命令 ...

  5. .net core 学习 读取配置文件

    在空项目中是没有配置文件的,首先要新建一个,配置文件内容如下,下面来读取各个内容 { "ConnectionStrings": { "DefaultConnection& ...

  6. 使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题

    Android编程权威指南(第3版)这本书是基于Android7.0的,到如今已经过于古老,最新的Android版本已经到10,而这本书的第四版目前还没有正式发售,在最近阅读这本书时,我发现这本书的部 ...

  7. python基础-网络编程part02

    TCP协议 TCP是传输控制协议,建立双向通道. 三次握手,建立连接 客户端向服务端发送建立连接的请求 服务端接收请求返回确认信息给客户端,并向客户端发送建立连接的请求 客户端接收请求返回确认信息给服 ...

  8. jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]

    目录 介绍 DevOps平台四大模块 针对DevOps开源项目 Jenkins 介绍 Maven 介绍 maven的核心概念介绍 SVN介绍 Nexus介绍 Maven私服的 个特性: 流程图 环境搭 ...

  9. Singletone 析构函数调不到

    <设计模式>定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例. 关键字:指向自己的静态指针私有,创建对象并赋值私有静态指针函数->公有, 构 ...

  10. PHP命令空间namespace及use的用法

    使用namespace的目的 命名空间将代码划分出不同的空间(区域),每个空间的常量.函数.类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念. 团队合作 ...