ETL定义、四大模块及子系统说明
ETL定义、四大模块及子系统说明
——《Pentaho Kettle解决方案》读书笔记 罗小川
目前公司正在进行数据仓库的建设的前期需求整理和项目启动阶段,想简单来谈一下自己对目前公司在用的ODS的kettle ETL的理解,针对日常运维中遇到的问题结合本书介绍的ETL子系统的建立可以更好的解决目前我们公司ODS系统的运维和运行效率问题,同时对后期数仓ETL的整体设计和四大组建进行梳理,笔记中有些内容直接引用原书。
一、什么是ETL
ETL: 抽取、转换和加载。将数据从OLTP系统中转移到数据仓库中的一系列操作的集合。
抽取:一般抽取过程需要连接到不同的数据源,以便为随后的步骤提供数据。这一部分看上去简单而琐碎,实际上它是ETL解决方案成功实施的一个主要障碍。
转换:在抽取和加载之间,任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面一些操作:
1.移动数据
2.根据规则验证数据
3.数据内容和数据结构的修改
4.集成多个数据源的数据
5.根据处理后的数据计算派生值和聚集值
加载:将数据机载到目标系统的所有操作。加载并不仅仅是将数据批量装载到目标表。加载过程还包括对代理键的管理和对维度表的管理等。
ELT(抽取、加载和转换)同ETL在数据整合的方法上略微不同。ELT下,数据首先从数据源进行抽取,加载到目标数据库中,再转换为所需要的格式。所有大数据量处理全部放在目标数据库中进行。这样做的好处在于,一般情况下,数据库系统更适合处理负载在百万级以上的数据集成。数据库系统也通常会对I/O(吞吐量)进行优化,用来提高数据处理速度。
数据模型:星型模型,每一个维度都是一个单独的维度表。除了日期和时间维,其它每个维表都使用自增列作为代理主键。
二、ETL系统的四大模块及34个子系统
ETL系统的四大块:抽取、清洗和更正、发布、管理。发布不仅仅是把数据写入到目标数据库中,也包括把数据写入到维度表或事实表中的那些转换。管理是对企业信息基础架构的管理。
ETL子系统被重构为34种子系统:
一、抽取
1. 数据剖析系统:目标是分析不同数据源的结构和内容。
2. 增量数据捕获系统:目标是捕获系统里数据的变化。
3. 抽取系统:从不同的数据源抽取数据,并输入到ETL流程里。
二、清洗和更正数据
4. 数据清洗和质量处理系统
5. 错误事件处理
6. 审计维度:审计维度表是一类特殊的维度表,数据仓库里所有的事实表都和审计维度表关联,审计维度表包含了对事实表变更的元数据,加载数据的日期和时间、数据的质量指标等。
7. 排除重复记录系统
8. 数据一致性:使来源于多个业务系统的事实数据遵照相同的维度。
三、数据发布:不仅是将数据插入到目标数据库那么简单。还要生成代理键、查询正确的维度键、加载事实数据。
9. 缓慢变更维度处理:几种缓慢变更维度方法:覆盖、增加新行、增加新列、增加一个小维度表、分离历史表、混合型。
10. 代理键生成系统
11. 层次维度构建:层次可以让用户分析查看维度不同级别上的数据。
12. 特殊维度生成系统:时间维度、杂项维度(垃圾维度)、小维度、收缩的或上卷的维度、静态维度(小的字典表或参照表)、用户自定义维度。
13. 事实表加载:事务粒度加载表、周期快照事实表、累积快照事实表。
14. 代理键管道:负责抽取正确的代理键,用于加载事实表。
15. 多值维度桥接表生成系统:处理不同深度的层次时或有多个维度项和事实表或其他维度表关联时。
16. 迟到数据处理:事实表和维度表数据都可能晚到。维度表迟到会比较麻烦。
17. 维度管理系统:中心控制系统,用来准备和向数据仓库发布正确的维度。
18. 事实表管理系统:负责任何创建、组织、管理和事实表相关的任务。
19. 聚集构建:聚集表能大幅提升性能,但需要维护聚集表。
20. OLAP Cube构建系统
21. 数据整合管理系统:从数据仓库获取数据,并把数据发送到其他环境中,通常用于离线数据分析或其他特殊目的,如给特定客户发送报表。
四、管理ETL环境
22. 作业调度
23. 备份系统。三个地方:1.抽取之后,改动之前;2.清洗、排重、更正之后;3.已经做完最后处理,写入数据仓库之前。通常数据仓库本身备份不是ETL工作。
24. 恢复和重新启动系统。
25. 版本控制子系统
26. 从开发环境到测试、生产环境的版本移植系统。
27. 工作流监控
28. 排序系统:分组、排序合并
29. 血统和依赖分析:提供血统分析和影响分析功能。
30. 问题报告系统
31. 并行/管道系统:任务的并行或在集群上执行。
32. 安全系统
33. 合规报告系统
34. 元数据资源库管理系统:目标是捕获到和ETL相关的所有业务、过程和技术元数据。重要的一部分就是系统文档化。
以上34个配套子系统的建立对公司ETL系统的管理会更加精确、并易于维护人员的日常管理。在新的数仓建设的ETL过程中,我们会加强对ETL功能子系统的建设和标准要求,提升公司整体数据治理的规划性和数据准确性。
ETL定义、四大模块及子系统说明的更多相关文章
- 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...
- python之定义参数模块argparse(二)高级使用 --传参为函数的实现
我们在文章python之定义参数模块argparse的基本使用中介绍了argparse模块的基本使用方法 当前传入的参数只能是int.str.float.comlex类型,不能为函数,这有点不方便,但 ...
- OpenCV 的四大模块
前言 我们都知道 OpenCV 是一个开源的计算机视觉库,那么里面到底有哪些东西?本文将为你解答这个问题. 模块一:CV 这个模块是 OpenCV 的核心,它包含了基本的图像处理函数和高级的计算机视觉 ...
- thinkphp3.2定义多模块并设置默认模块
前台入口文件index.php <?php // +---------------------------------------------------------------------- ...
- 第10.5节 使用__all__定义Python模块导入白名单
一. 引言 <第10.4节 Python模块的弱封装机制>介绍了Python模块的的弱封装机制,除了使用弱封装机制来从一定程度上防止导入特定成员外,Python模块中还提供可另外一种类似白 ...
- python之定义参数模块argparse(一)基本使用
在shell脚本中,若脚本带参数,则在脚本中使用$1.$2...等引用, 在python中,也可以定义类似的引用参数,可以为必选项也可以可选项. 基本用法如下三种: 1.必选项(位置参数) impor ...
- 将Angular6自己定义的模块发布成npm包
创建自己的模块组件 1. ng new 一个工程 2. ng g m 创建模块 例如我这里的modules文件下创建header模块 3. ng g c modules/head 创建一个hear组件 ...
- AngularJS标准Web业务流程开发框架-4.AngularJS四大模块之一:Controller
一.Controller的创建 angular.controller("name",funtion($scope){ }) 1.name:控制器的名称(建议参考Java包的命名规范 ...
- RequireJS 模块的定义与加载
模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染.它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量.RequireJ ...
随机推荐
- javadoc 自动生成java帮助文档
用法: javadoc [options] [packagenames] [sourcefiles] 选项: -public 仅显示 public 类和成员 -protected 显示 protect ...
- java 框架-企业级搜索 Solr
https://blog.csdn.net/cs_hnu_scw/article/details/79388080 一:Solr简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类 ...
- tfs如何为工作项添加变更集
今天工作中遇到的,可惜之前没怎么用过TFS. 我这是最后一次签入的时候关联了工作项.目的是要把先前签入的绑定到该任务上. 团队自愿管理器->查找历史记录->双击最后一次绑定工作项的变更集- ...
- vue、react中循环遍历为什么会有key,key有什么作用?
先讲一下,vue和react都是在操作虚拟dom,并且根据diff算法进行新旧dom对比,从而更新dom,以vue举例: vue官方文档中写到有 key 的特殊属性主要用在 Vue 的虚拟 DOM 算 ...
- 在Linux下执行Jmeter脚本
前言 Jmeter这款接口测试工具,已经在越来越多的公司被要求会使用了. 而且,现在应该部分小伙伴们都开始用起来了. 但是,你们知道除了在Windows用图形化界面的Jmeter执行脚本之外,还有其他 ...
- 你不知道的javascript(上卷)读后感(一)
三剑客 编译,顾名思义,就是源代码执行前会经历的过程,分三个步骤, 分词/词法分析,将我们写的代码字符串分解成多个词法单元 解析/语法分析,将词法单元集合生成抽象语法树(AST) 代码生成,抽象语法树 ...
- RabbitMQ中初始化ConnectionFactory常用设置属性
初始化ConnectionFactory 代码 ConnectionFactory factory = new ConnectionFactory(); factory.setHost(ip); fa ...
- 开发六年mybatisplus使用小结
最近在项目里用到了一个第三方库,叫mybatisplus,是一个mybatis的增强库,简单来说就是增强了mybatis的功能,让mybatis更好用,mybatisplus给的官方定义是Mybati ...
- Docker pull下载出现 error pulling image configuration:
出现这个问题,并且在错误信息的最后附带 net/http: TLS handshake timeout: 猜测是docker的相关配置问题,导致无法通过TLS握手 执行如下命令修改配置 echo &q ...
- 14、RALM: 实时 look-alike 算法在推荐系统中的应用
转载:https://zhuanlan.zhihu.com/p/71951411 RALM: 实时 look-alike 算法在推荐系统中的应用 0. 导语 本论文题为<Real-time At ...