数据仓库基础(二)ETL
本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135529.html
ETL在数据仓库中具有以下的几个特点:
数据流动具有周期性:
因为数据仓库中的数据量巨大,一般采用成熟的ETL工具去完成抽取、转换、加载,以降低设计开发的和维护的复杂度,使设计开发人员有更多的时间去专注于业务转化规则。
ETL是数据抽取、转换、加载的简写。它的一般过程是将数据源抽取出来,中间经过数据的清洗、转换,最后加载到目标表中。ETL的过程一般是批量的。
ETL的本质
1.用户应该理解ETL本质上就是数据从源到目标的过程。
2.大多数的ETL工具价格昂贵,宏观上一般都适合处理海量的数据,但是在微观上需要考虑ETL处理的不同情况。
3.元数据时ETL过程的重要体现,藐视了数据源的属性、数据源到目标库的转换规则,数据抽取历史记录等。
4.构建一个商业智能系统,设计开发人员更多的人喜欢在ETL开始之前先将所有的业务规则弄清楚。
影响ETL数据质量的关键因素:
- 可能会有一部风数据因为客观或者人为的原因到时数据格式混乱。
- 源系统设计存在不合理性
- 在开发过程中,因为开发人员的错误或者设计人员对业务规则描述的问题,同样会导致数据质量出现问题。
保证数据质量的方法:
首先用户必须遵守数据仓库项目中的数据源的质量要求,对业务源数据进行仔细分析,以便对数据源的任何错误或不规范的地方有相应的处理方法,如对错误进行修改或者舍弃
其次,在保证数据源的质量之后,在设计ETl过程中,对每一个步骤应该有一个衡量数据质量的方法,需要重视ETL的每一个过程。
最后,就是规范业务流程,保证ETL正确性,避免误删或者重复加载数据。
其中对质量的衡量有几种方式:
- 1.定义的数据是否和实际值相同。
- 2.指标数据是否符合业务规则。
- 3.数据是否和业务源系统中的信息保持一致。
- 4.数据时违背自然规律或者不符合常理。
主流的ETL工具有 Informatica PowerCenter 和 Datastage。ETL 是商业智能的核心和灵魂。
详解ETL过程:
1.数据抽取
数据抽取就是从源系统中获取业务数据的过程。数据抽取时需要考虑很多的因素,(抽取时间,收取方式,抽取周期等)数据抽取有以下几种情况:
(1)如果业务操作系统数据库和数据仓库质检的数据库管理系统完全相同,只需要建立相应的连接关系就可以使用ETL工具直接访问,或者调用相应的SQL语句或者存储过程。
(2)若数据仓库系统和业务操作型数据库的数据管理器不相同,比较简单的方式是使用ETL工具导出成文本文件或者Execl文件,然后再进行统一的数据抽取。
(3)如果需要抽取的数据量非常的庞大,此时必须考虑增量抽取。
2.数据清洗
数据清洗就是选择出有缺陷的数据,然后再将他们正确话和规范化,从而达到用户要求的数据质量标准。
3.数据转换
数据转换就是指从业务系统中抽取的源数据,然后再根据数据仓库模型的需求,进行一系列数据转换的过程。
数据转换是ETL过程中复杂度最高的过程,包括对数据不一致性的转换,业务指标的计算和某些数据的汇总,为决策系统提供数据支持。
ETL转换过程中可能包含几个方面:
- 对空值进行处理:在进行加载是需要将空值替换成某一数据或者直接进行加载。
- 对数据格式规范化:例如:统一将数值型转化为字符型
- 根据业务需求进行字段的拆分和合并
- 对缺失数据的替换:
- 根据业务规则对数据进行过滤
- 根据编码表进行数据唯一性的转换:
4.数据加载:
这是ETL的最后一笔,需要保证加载工具必须有高效的性能去完成数据加载,同时还需要考虑加载的时周期和数据加载的策略。
数据加载包括:
时间戳的加载方式,是比较常见的一种加载方式。
全表对比的加载方式、通过读取日志进行加载的方式、全表删除后再进行加载的方式。
5.ETL日志
ETL日志非常重要,它记录了ETL执行过程中的每一步信息。帮助系统维护人员进行监控,当然ETL日志也可以未做数据加载的一个策略。
ETL设计的规范要点:
1.在ETL设计之前,需要根据业务的需求确定所要分析的主题和数据结构。根据数据仓库的模型,考虑在ETL设计中是否增加预留字段和属性。
2.确定数据的粒度
3.ETL抽取周期的确定。
4.以增量抽取的方式作为ETL设计的重点,减少数据抽取的压力和抽取时间。
5.通常抽取盒清洗可以分成很多步骤
6.对异常情况进行处理。包括网络中断等情况进行处理,保证数据的正确性。
7.对ETL的运行管理和监控措施。
ETL的框架结构:
主要包括:ETL调度、抽取策略、转换策略、加载策略。
统一调度室ETL中较为重要的功能。
1.自动调度方式
2.手动调度方式
数据仓库基础(二)ETL的更多相关文章
- 一脸懵逼学习Hive(数据仓库基础构架)
Hive是什么?其体系结构简介*Hive的安装与管理*HiveQL数据类型,表以及表的操作*HiveQL查询数据***Hive的Java客户端** Hive的自定义函数UDF* 1:什么是Hive(一 ...
- 数据仓库系列之ETL中常见的增量抽取方式
为了实现数据仓库中的更加高效的数据处理,今天和小黎子一起来探讨ETL系统中的增量抽取方式.增量抽取是数据仓库ETL(数据的抽取(extraction).转换(transformation)和装载(lo ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Bootstrap <基础二十九>面板(Panels)
Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...
- Bootstrap<基础二十七> 多媒体对象(Media Object)
Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论),我们可以在组件中使用图文混排,图像可以左对齐或者右对齐.媒体对象可以用更少的 ...
- Bootstrap <基础二十六>进度条
Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
- Bootstrap<基础二十四> 缩略图
Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...
- Bootstrap <基础二十三>页面标题(Page Header)
页面标题(Page Header)是个不错的功能,它会在网页标题四周添加适当的间距.当一个网页中有多个标题且每个标题之间需要添加一定的间距时,页面标题这个功能就显得特别有用.如需使用页面标题(Page ...
随机推荐
- jQuery 核心 - noConflict() 方法
1.遇到问题: 当我们写jquery时使用$,发现写的jquery全部失效: 2.发现问题: 排查后发现是noConflict()函数在作怪,因为使用noConflict()函数后,重新定义$名字为j ...
- wpgcms---详情页面数据怎么渲染
wpgcms的详情页面的数据会被保存在 contentInfo 这么一个字段里面. 面包屑导航调用: <p>当前位置 {% for c in crumb|slice(1, crumb|le ...
- vue--拖动排序
https://blog.csdn.net/jx950915/article/details/79803485?from=singlemessage
- Druid在有赞的实践
转载一篇自己在公司博客上的文章 一.Druid介绍 Druid 是 MetaMarket 公司研发,专为海量数据集上的做高性能 OLAP (OnLine Analysis Processing)而设计 ...
- PHP中有丰富的运算符集,它们中大部分直接来自于C语言
PHP中有丰富的运算符集,它们中大部分直接来自于C语言.按照不同功能区分,运算符可以分为:算术运算符.字符串运算符.赋值运算符.位运算符.条件运算符,以及逻辑运算符等.当各种运算符在同一个表达式中时, ...
- 《机器学习实战》第3章决策树程序清单3-1 计算给定数据集的香农熵calcShannonEnt()运行过程
from math import log def calcShannonEnt(dataSet): numEntries = len(dataSet) print("样本总数:" ...
- POJ 1149 - PIGS - [最大流构图]
Time Limit: 1000MS Memory Limit: 10000K Description Mirko works on a pig farm that consists of M loc ...
- cross browse compatible
不过我之前用过一个Chrome的插件叫浏览器兼容性检测工具,可以在内网测试,会自动监测网页的设计是否满足对应浏览器及版本的规范,不满足的话就会详细提示出来,不过有些过于专业性了,更适合开发人员查看,测 ...
- 20144306《网络对抗》MAL_PC平台逆向破解_Advanced
PC平台逆向破解_Advanced 一.注入shellcode并执行 1.什么是shellcode? shellcode顾名思义就是一段为了获取交互式shell的机器指令,是用来发送到服务器利用特定漏 ...
- physics---hdu5826(积分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5826 题意:有n个小球在一条直线上滚动,起始位置为xi, 方向为di(-1往左走,1往右走),初始速度 ...