- 什么是数据仓库
- 数据仓库的构建与使用
- 数据仓库与操作数据库系统
- 数据仓库的概念模型
- 一种数据挖掘查询语言: DMQL
- 概念分层
- 多维数据模型上的OLAP操作
什么是数据仓库
- 数据仓库的定义很多,但却很难有一种严格的定义
- 它是一个提供决策支持功能的数据库,它与公司的操作数据库分开维护。
- 为统一的历史数据分析提供坚实的平台,对信息处理提供支持
数据仓库关键特征
面向主题,是数据仓库显著区别于关系数据库系统的一个特征
围绕一些主题,如顾客、供应商、产品等
关注决策者的数据建模与分析,而不是集中于组织机构的日常操作和事务处理。
排除对于决策无用的数据,提供特定主题的简明视图。
数据集成
一个数据仓库是通过集成多个异构数据源来构造的。
关系数据库,一般文件,联机事务处理记录
使用数据清理和数据集成技术。
确保命名约定、编码结构、属性度量等的一致性。
当数据被移到数据仓库时,它们要经过转化
随时间而变化
数据仓库是从历史的角度提供信息
数据仓库的时间范围比操作数据库系统要长的多。
操作数据库系统: 主要保存当前数据。
数据仓库:从历史的角度提供信息(比如过去 5-10 年)
数据仓库中的每一个关键结构都隐式或显式地包含时间元素,而操作数据库中的关键结构可能就不包括时间元素。
数据不易丢失
尽管数据仓库中的数据来自于操作数据库,但他们却是在物理上分离保存的。
操作数据库的更新操作不会出现在数据仓库环境下。
不需要事务处理,恢复,和并发控制等机制
只需要两种数据访问:
数据的初始转载和数据访问(读操作)
数据仓库的构建与使用
数据仓库的构建包括一系列的数据预处理过程
- 数据清理
- 数据集成
- 数据变换
数据仓库的使用热点是商业决策行为,例如:
- 增加客户聚焦
- 产品重定位
- 寻找获利点
- 客户关系管理
数据仓库与操作数据库系统
操作数据库系统的主要任务是联机事务处理OLTP
日常操作: 购买,库存,银行,制造,工资,注册,记帐等
数据仓库的主要任务是联机分析处理OLAP
数据分析和决策支持,支持以不同的形式显示数据以满足不同的用户需要
多维数据模型
数据仓库和OLAP工具基于多维数据模型
在多维数据模型中,数据以数据立方体(data cube)的形式存在
数据立方体允许以多维数据建模和观察。它由维和事实定义
维是关于一个组织想要记录的视角或观点。每个维都有一个表与之相关联,称为维表。
多维数据模型围绕中心主题组织,该主题用事实表表示
事实表包括事实的名称或度量以及每个相关维表的关键字
事实指的是一些数字度量
数据仓库的概念模型
最流行的数据仓库概念模型是多维数据模型。这种模型可以以星型模式、雪花模式、或事实星座模式的形式存在。
星型模式(Star schema): 事实表在中心,周围围绕地连接着维表(每维一个),事实表含有大量数据,没有冗余。
雪花模式(Snowflake schema): 是星型模式的变种,其中某些维表是规范化的,因而把数据进一步分解到附加表中。结果,模式图形成类似于雪花的形状。
事实星座(Fact constellations): 多个事实表共享维表, 这种模式可以看作星型模式集,因此称为星系模式(galaxy schema),或者事实星座(fact constellation)
一种数据挖掘查询语言: DMQL
DMQL首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义
立方体定义 (事实表)
define cube <cube_name> [<dimension_list>]: <measure_list>
维定义 (维表)
define dimension <dimension_name> as
(<attribute_or_subdimension_list>)
特殊案例 (共享维表的定义)
第一次作为维表定义 “cube definition”
然后:define dimension <dimension_name> as <dimension_name_first_time> in cube <cube_name_first_time>
概念分层
一个概念分层(concept hierarchy)定义一个映射序列,将低层概念映射到更一般的高层概念
E.g. 表示location的概念:杭州->浙江->中国->亚洲
概念分层允许我们在各种抽象级审查和处理数据
多维数据模型(数据立方体)使得从不同的角度对数据进行观察成为可能,而概念分层则提供了从不同层次对数据进行观察的能力;结合这两者的特征,我们可以在多维数据模型上定义各种OLAP操作,为用户从不同角度不同层次观察数据提供了灵活性:
多维数据模型上的OLAP操作
上卷(roll-up):汇总数据
通过一个维的概念分层向上攀升或者通过维规约
当用维归约进行上卷时,一个或多个维由给定的数据立方体删除
上卷操作通过维的概念分层向上攀升或者通过维归约(即将4个季度的值加到一起为一年的结果)在数据立方体上进行聚集。
如在产品维度上,由产品向小类上卷,可得到小类的聚集数据,再由小类向大类上卷,可得到大类层次的聚集数据
下钻(drill-down):上卷的逆操作
由不太详细的数据到更详细的数据,可以通过沿维的概念分层向下或引入新的维来实现 (为给定数据添加更多细节) 下钻是上卷的逆操作,它由不太详细的数据到更详细的数据。
使用户在多层数据中能通过导航信息而获得更多的细节数据。下钻可以沿维的概念分层向下或引入新的维或维的层次来实现。
切片和切块(slice and dice)
切片操作在给定的数据立方体的一个维上进行选择,导致一个子方
切块操作通过对两个或多个维进行选择,定义子方
切片定义:在多维数据集的某一维上选定一个维成员的操作称为切片。
例如,在多维数组: (维1,维2,…,维i,…,维n,度量列表) 中选定一维,即维i,并取其一维成员(维成员vi),所得的多维数组的子集
(维1,…,维i-1,维成员vi,维i+1,…,维n,度量列表) 称为维i上的一个切片。
切块定义:在多维数据集(维1,维2,…,维n,度量列表)中通过对两个或多个维执行选择得到子集的操作称为切块
转轴(pivot)
立方体的重定位,可视化,或将一个3维立方体转化为一个2维平面序列
转轴是一种可视化操作,通过转动当前数据的视图来提供一个数据的替代表示
其他OLAP操作
钻过(drill_across):执行涉及多个事实表的查询
钻透(drill_through):使用关系SQL机制,钻到数据立方体的底层,到后端关系表
其他OLAP操作可能包括列出表中最高或最低的N项,以及计算移动平均值、增长率、利润、统计函数等等