1 数据仓库的基本概念
1.1 为什么要使用数据仓库
数据仓库是从数据库基础上发展而来,主要是为了方便组织、理解和使用数据。那么问题来了,传统的数据库不也可以实现这些功能吗,为什么要发展数据仓库技术?试想这样一个场景,现在我们想要对数据库中的数据进行一些复杂的操作,比如我们想要按照不同季度,不同地区去统计不同品牌手机的销售量。对于传统数据库我们需要对多张表进行连接操作,同时使用sum()函数,group by进行分组等操作。当数据量小的时候处理速度还能接受,当数据量庞大时这些复杂操作十分消耗系统资源。传统的数据库可以满足应用的日常事务处理工作,但无法满足对数据进行复杂分析处理。这时候就需要数据仓库,它是专门设计用来进行复杂数据分析处理的。
1.2 数据库和数据仓库的比较
1.2.1 数据的分类
对于数据,我们可以根据用途分为两类:操作型数据和分析型数据。传统数据库对数据进行增删改查操作所以是操作型数据,数据仓库中的数据主要用来分析决策属于分析型数据。
表1.1 两类数据的区别
操作型数据 | 分析型数据 | |
---|---|---|
粒度 | 细粒度 | 综合的,粗粒度 |
存储数据 | 存取瞬间 | 历史数据 |
驱动 | 事务驱动 | 分析驱动 |
目的 | 面向应用 | 面向分析 |
操作数据大小 | 一次操作数据小 | 一次操作数据大 |
1.2.2 数据库和数据仓库的区别
数据库和数据仓库是相辅相成的,两者不是相互取代的关系,各自用于不同场景。
表1.2 数据库和数据仓库的区别
数据库 | 数据仓库 | |
---|---|---|
目的 | 面向应用 | 面向分析 |
容量 | 相对小 | 巨大 |
存储的数据 | 实时的数据 | 历史数据 |
操作 | 一次操作一个记录 | 一次操作一个数据集合 |
冗余 | 非冗余或少量冗余 | 经常冗余 |
操作频率 | 频繁 | 相对不频繁 |
计算 | 简单操作 | 复杂操作 |
特色 | 支持事务处理 | 支持数据分析 |
1.3 数仓的特点
- 面向主题:所谓主题就是一些数据集合,有完整的、一致的内容。面向主题的数据组织方式能统一的刻画各个分析对象所涉及的各项数据,以及这些数据之间的联系
- 集成:不同的数据库和数据源的数据经过抽取、筛选、清理、转换等流程,才将它们集成到数据仓库中
- 稳定不易失:数据仓库在某个短时段内看是保持不变的,一般数仓建构完成较长时间内会保持相对稳定,不会对数据进行修改
- 随时间变化:数据仓库中的是历史数据,数据都有时间维度,所以从长时间看数据仓库又是变化的。
1.4 数据仓库系统
1.4.1 数据仓库系统组成
1.4.2 ETL
ETL分别是Extract、Transform、Load三个英文单词的首字母,即抽取、转换和装载。
- 数据抽取:把数据从各种各样的存取环境提取出来,需要考虑抽取方式、抽取时机、抽取周期等。
- 数据转换:将异构的数据格式能统一起来,转换为统一格式。
- 数据装载:将清洗处理完的数据导入数据仓库中。
2 数据仓库建模
2.1 构建模式
数据分析以数据为驱动,数据仓库又是数据仓库系统的核心,所以构建良好的数据仓库十分关键。数据仓库主要有先整体再局部和先局部再整体两种构建模式,即所谓的自顶向下和自底向上构建模式。这里先提一个概念数据集市,它指的是数据仓库的子集,存储的是数据仓库的部分数据,跟数据仓库是整体和部分的关系。
2.1.1 自顶向下构建模式
自顶向下的构建模式要求先对数据仓库进行整体设计,之后再针对各个主题构建数据集市。这种构建模式要求企业技术成熟,对业务理解透彻。
优点:数据规范程度高,减少数据冗余和不一致;可以快速使用数据进行分析和挖掘。
缺点:建设周期长、见效慢,对企业技术要求高,风险较大。
2.1.2 自底向上构建模式
自底向上的构建模式要求先建立各个主题的数据集市,之后在此基础上逐步扩充建立完整的数据仓库。
优点:投资少、见效快,设计灵活,结构简单易实现。
缺点:数据需要逐步清洗和提炼,数据会有较多冗余和不一致性。
2.2 多维数据模型及其相关概念
- 粒度:粒度是数据仓库中数据单元的详细程度,数据越详细粒度越小,数据综合度高粒度越大。
- 维度:维度(简称维)是指人们观察事物的特定角度,概念上类似于关系表的属性。
- 维属性和维成员:一个维是通过一组属性描述的,如时间维可以包含年份、季度、月份和日期等属性,这些属性统称为维属性。一个时间维的具体取值,如20xx年第一季度6月8号称为维成员。
- 维层次:维度中的维属性的粒度可能不同,可以将不同粒度的属性映射到不同层次,如“年份→季度→月份→日期”就是维层次。
- 度量:度量也称为事实,是数据仓库中具有实际意义的数值型数据,如销售量、单价、库存量等。度量是多维数据的核心,是用户浏览多维数据时重点查看的数据。
- 事实表:存放度量的表称为事实表,用来记录事实并做相应指标的统计分析,通常记录数量很多。事实表中除了度量外其他字段都是维表的关键字(外键)。
- 维表:维表存放维信息,包括维属性(列)和维层次,一个维用一个维表表示。
2.3 常见的多维数据模型
常见的多维数据模型有星形模式、雪花模式和事实星座模式,它们三者之间的关系如图所示。
2.3.1 星形模式
星形模型由一个事实表和多个维表组成。事实表是该模式的核心,通过事实表将各种不同的维表连接起来。
2.3.2 雪花模式
雪花模式在星形模式的基础上,允许每个维表可以连接其他维表。
2.3.3 事实星座模式
事实星座模式有多个事实表,一般一个主题(问题)对应一个事实表,在多主题情况下一个事实表已经不能满足要求,所以事实星座模式允许使用多个事实表来满足多主题的情况。
3 OLAP
OLAP(OnLine Analytical Processing,联机分析处理),主要是对数仓数据进行访问、处理和分析的一类软件技术。直白来说,通过OLAP技术用户可以操作数据进行分析处理。
3.1 OLAP的基本操作
1、切片和切块
按条件选择多维数据的维成员,类似于数据库中select操作。切片的结果是一维数据,而切块操作结果是多维数据,切块可以看成是多次使用切片。
2、旋转
旋转是一种视图操作,改变页面显示的维方向,本质是用户可以从不同角度来看数据。
上面两张图是以手机销售为例,我们可以清楚的明白旋转操作的含义,将季度和品牌进行旋转操作,将原来各省每季度各品牌销售数量,改为各省各品牌每季度销售数量,我们的观察视角发生了变化。
3、上卷
上卷操作通过维的概念分层向上进行数据聚集。如下面的图片所示,假设我们统计手机的总销售量,我们把所有品牌的手机销售量求和,这个操作SUM就是从品牌上卷到了手机。
4、下钻
下钻是上卷的逆操作,由上层不详细的数据到更详细的数据。下图我们从品牌下钻到每个品牌的具体型号,显然我们的数据更加详细了。
总结:本文是自己学习数据仓库的笔记和总结,介于作者也是初学者,难免有错误欢迎各位指正。由于篇幅较短有些内容没有介绍,下附思维导图一张。
参考文献:李春葆,李石君,李筱驰. 数据仓库与数据挖掘实战. 电子工业出版社,2014.
附件:数仓思维导图