ETL
构建企业级数据仓库五步法
在数据仓库构建中,
ETL
贯穿于项目始终,它是整个数据仓库的生命线,包括了从数
据清洗,整合,到转换,加载等的各个过程,如果说数据仓库是一座大厦,那么
ETL
就是
大厦的根基,
ETL
抽取整合数据的好坏直接影响到最终的结果展现。所以
ETL
在整个数据
仓库项目中起着十分关键的作用,必须摆到十分重要的位置。
一、什么是
ETL
ETL
是数据抽取(
Extract
)、转换(
Transform
)、加载(
Load
)的简写,它是将
OLTP
系统中的数据经过抽取,
并将不同数据源的数据进行转换、整合,
得出一致性的数据,
然后
加载到数据仓库中。
简而言之
ETL
是完成从
OLTP
系统到
OLAP
系统的过程
(图一:
pic1.jpg
)
。
二、数据仓库的架构
数据仓库(
Data Warehouse \ DW
)是基于
OLTP
系统的数据源,为了便于多维分析和
多角度展现将其数据按特定的模式进行存储而建立的关系型数据库,它不同于多维数据库,
数据仓库中的数据是细节的,集成的,数据仓库是面向主题的,是以
OLAP
系统为分析目
的。它包括星型架构(图二:
pic2.jpg
)与雪花型架构(图三:
pic3.jpg
),其中星型架构中
间为事实表,四周为维度表,类似星星;
雪花型架构中间为事实表,两边的维度表可以再有
其关联子表,
而在星型中只允许一张表作为维度表与事实表关联,
雪花型一维度可以有多张
表,而星型不可以。考虑到效率时,星型聚合快,效率高,不过雪花型结构明确,便于与
OLTP
系统交互。在实际项目中,我们将综合运用星型架构与雪花型架构。
三、
ETL
构建企业级数据仓库五步法的流程
(一)、确定主题
即
确定数据分析或前端展现的某一方面的分析主题,例如我们分析某年某月某一地区的
啤酒销售情况,就是一个主题。主题要体现某一方面的各分析角度(维度)和统
计数值型
数据(量度),确定主题时要综合考虑,一个主题在数据仓库中即为一个数据集市,数据集
市体现了某一方面的信息,多个数据集市构成了数据仓库。
(二)、确定量度
在确定了主题以后,
我们将考虑要分析的技术指标,
诸如年销售额此类,
一般为数值型
数据,
或者将该数据汇总,或者将该数据取次数,
独立次数或取最大最小值等,这样的数据
称之为量度。
量度是要统计的指标,
必须事先选择恰当,
基于不同的量度可以进行复杂关键
性能指标(
KPI
)等的计算。
(三)、确定事实数据粒度
在确定了量度之后我们要考虑到该量度的汇总情况和不同维度下量度的聚合情况,
考虑
到量度的聚合程度不同,
我们将采用“最小粒度原则”,
即将量度的粒度设置到最小,
例如
我们将按照时间对销售额进行汇总,
目前的数据最小记录到天,
即数据库中记录了每天的交
易额,那么我们不能在
ETL
时将数据进行按月或年汇总,需要保持到天,以便于后续对天
进行分析。而且我们不必担心数据量和数据没有提前汇总带来的问题,因为在后续的建立
CUBE
时已经将数据提前汇总了。
(四)、确定维度
维度是要分析的各个角度,
例如我们希望按照时间,
或者按照地区,
或者按照产品进行分
析,那么这里的时间、地区、产品就是相应的维度,基于不同的维度我们可以看到各量度的
汇总情况,我们可以基于所有的维度进行交叉分析。这里我们首先要确定维度的层次
(
Hierarchy
)和级别(
Level
)(图四:
pic4.jpg
),
维度的层次是指该维度的所有级别,包
括各级别的属性;
维度的级别是指该维度下的成员,
例如当建立地区维度时我们将地区维度