本文转载自:http://www.cnblogs.com/hbsygfz/p/4762085.html

1. 引言

本篇主要介绍数据仓库中的一项重要分析技术——联系分析处理(OLAP)。
第一篇笔者介绍到数据处理主要有两种,操作型数据处理和分析型数据处理,前者可以称为OLTP,后者可以称为OLAP。本篇将具体介绍什么是OLAP?它与OLTP的区别是什么?多维数据模型和多维分析操作是OLAP中的两种核心技术,也会予以说明。

2. OLAP定义

联机分析处理(Online Analysis Process,OLAP)的定义有以下几种:
OLAP委员会的定义:“OLAP是使分析人员、管理人员或者执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的,并真实反映企业多维特性的信息进行快速、一致、交互的存取,从而获得对数据的更深入了解的一类软件技术。”
文献[2]的定义:“OLAP是以海量数据为基础的复杂分析技术,支持各级管理决策人员从不同的角度,快速灵活地对数据仓库中的数据进行复杂查询和多维分析处理,并且能以直观易懂的形式将查询和分析结果提供给决策人员,从而辅助各级管理人员作出正确决策。”
我的理解是:“OLAP是一种对数据仓库中的数据进行复杂的查询和计算操作,让用户能够从多个角度、快速有效的获取信息的分析技术。”

总结:以上定义都表明了OLAP的关键词是:
“海量数据”、“复杂查询计算”、“多维分析”、“快速灵活”、“支持决策”
这也就是OLAP的特点。

3. OLAP与OLTP的区别

OLAP和OLTP是两类不同的应用,OLTP是对数据库中数据的联机查询和增删改操作,它以数据库为基础;而OLAP适合以数据仓库为基础的数据分析处理。
OLAP中历史的、导出的及经综合提炼的数据主要来自于OLTP所依赖的底层数据库,OLAP数据较OLTP数据需要多一步综合处理或多维化的操作。
OLAP数据和OLTP数据的区别如下表:


可以看出OLAP和OLTP在处理的数据的特征、面向的用户均有所不同。

4. 多维数据模型的基本概念

(1)定义:
多维数据模型是OLAP中的一项核心技术。
多维数据模型是数据分析时用户的数据视图,是面向分析的数据模型,用于给分析人员提供多种观察的视角和面向分析的操作。
多维数据模型的数据结构可以用多维数组来表示,如:(维度1,维度2,……,维度n;度量1,度量2,……,度量m)
多维数据模型也可以使用多维立方体data cube)直观展现,其中表示用户的观察角度,多维空间中的表示度量的值。

(2)常用术语:
① 维(dimension):维是人们 观察事物的特定角度,是事物的某个属性,比如时间、地点、产品。每个维都有唯一的名称,比如时间维、地区维、产品维。
② 维成员(member):维成员就是维的取值。如果一个维是多个层次的,那么维成员就是不同维层次上的取值的组合。比如地区维,维成员就可以是“北京”、“上海”、“杭州”等;而日期维包括年、月、日三个层次,那么它的维成员就是“2008年8月8日”,但并不是每个层次上都一定要有取值,比如“2008年8月”也可以是维成员。
③ 维层(level):维是观察事物的角度,维层就是这个角度的细节程度,不同的细节程度对应着不同的维层。比如日期维,可以从“年”这一细节程度去观察,也可以从“季度”、“月份”去观察,因此年、季度、月份等就是日期维的不同维层。层之间有一定的层次级别。
④ 维层次(hierarchy):维层次是维层的不同划分。比如日期维可以按照“年-季度-月”划分,也可以按照“年-星期-日”划分。两种划分就是日期维的两个维层次。再比如产品维,可以按照产品、类型、种类划分,也可以按照制造商、代理商、承销商来划分。
⑤ 维属性(attribute):维属性就是维成员所具有的特征,维属性可以在每个维成员上定义,也可以在维层上定义。如果在维层上定义,那么该维层上的所有维成员都有这些属性。比如产品维的某一个成员“洗衣机”,它有一个“洗涤重量”的属性,这就是维属性。
⑥ 度量(measure):度量就是要分析的目标或对象。常见的度量值有销售量、供应量、利润等。度量一般有名称、数据类型、单位、计算公式等属性。度量还可以分为可累计型和不可累计型。
⑦ 数据方体(cube):多维数据模型的空间展现就是数据方体,也称为多维立方体。一个数据方体由多个度量组成。n维立方体可以看做由一系列的n-1维立方体组成。
⑧ 数据单元(cell):在一个数据立方体中,当每一个维上都确定一个维成员,那么就可以唯一确定多维空间中的一个
点,这个点就称为数据单元。一个数据单元可以有多个度量值,比如一个三维立方体,有三个维度:日期维、地区维、产品维,那么“2008年8月8日”、“北
京”、“冰箱”,就可以确定一个数据单元,这个数据单元上的度量值可以是利润、销售额、销售数量等。

5. 常用的多维数据模型

常见的多维数据模型有星型模型、雪花模型、事实群模型
(1)星型模型:
星型模型是多维数据模型的基本结构,通常是由位于中心的一张表和其周围的多张表组成。中心的表叫做事实表,周围的表叫做维度表事实表fact表)用来存储事实的度量值和各种维度表的主码值。维度表dimension表)用来保存维的信息,即每个维成员的属性信息和层次信息。事实表通过维度表的主码与各维度表相连接。
星型模型不支持维的层结构。每个维只有一个维表。如果一个维度有多个维层,那么所有的维层属性都必须放在这一个维表里面。因此就会因为没有规范化而产生了一定的冗余


(2)雪花模型:
雪花模型是在星型模型的基础上发展而来,每一个维度不再只有一张维度表,而是可以有多张维度表。雪花模型和星型模型的主要区别在于雪花模型会根据维层对维度表进行规范化。经过规范化的维表不仅易于存储而且能节省空间,但是在查询时就需要比较多的连接操作。因此我们在处理时,可以将星型模型和雪花模型进行综合,对于较小的维度表仍然使用星型模型的不规范形式,对于较大的维度表则使用雪花模型的规范化形式。

(3)事实群模型:
事实群模型类似于星型模型,区别只是多张事实表之间可以共享同一张维度表。

6. 常用的多维分析操作

(1)多维分析基础——聚集函数
聚集就是对细节数据进行综合的过程。
最常用的五种聚集函数:求和(sum)、计数(count)、最大值(max)、最小值(min)、平均值(average),还有求中间值(median)、排序(rank)。
(2)切片:slice
就是在数据方体的某一维上选定一个维成员的动作,即限定多维数组某一个维度只取一个特定的值。
比如地区维,选定“北京”这一个维成员,这样就得到一个切片。
(3)切块:dice
就是在数据方体的某一维上选定某个区间的全部维成员的动作,即限定多维数组某一个维度只取一定区间的值。
比如地区维,选定“北京”、“上海”、“杭州”,这样就得到一个切块。当这一个区间只有一个维成员时,就得到一个切片。因此切块可以由多个切片操作叠合而成。
(4)旋转:rotate
改变数据方体维的次序的动作称为旋转。旋转操作对数据不做任何改变,只是改变立方体摆放的视角。
(5)下钻:drill down
下钻操作就是在某个分析的过程中,用户可能需要从更多的维或者某个维的更细层次上观察数据,这时候就需要通过下钻操作来实现。比如将日期维从季度层次下钻到月份层次。下钻前用户只能看到季度数据,而下钻后就可以看到月份数据。
下钻操作主要有两种类型:一是在现有的维下钻取更细节一层的数据。比如日期维上的季度数据下钻到月份数据。二是增加更多的维,比如现在只分析了三个维度的数据,但是问题仍然无法解决,这时候就需要更多维的数据。
(6)上卷:roll up
上卷操作是相对下钻操作而言的,下钻可以看到更多更细节的数据,因此上卷操作就是看到更少更综合的数据。因此,上卷操作也分为两种,一种是上卷到更高层次的数据;另一种是减少维度。

7. 参考文献

[1] 数据仓库(原书第4版),William H.Inmon著,王志海等译,机械工业出版社,2006.8
[2] 数据仓库与数据分析教程,王珊等编著,高等教育出版社,2012.8

数据仓库原理<4>:联机分析处理(OLAP)的更多相关文章

  1. 大数据基础篇(一):联机分析处理(OLAP) 与 联机事务处理(OLTP)

    联机事务处理(OLTP) OLTP也称实时系统(Real Time System),支持事务快速响应和大并发,这类系统典型的有ATM机(Automated Teller Machine)系统.自动售票 ...

  2. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)

    之前看了认识数据以及数据的预处理,那么,处理之后的数据放在哪儿呢?就放在一个叫“数据仓库”的地方. 数据仓库的基本概念: 数据仓库的定义——面向主题的.集成的.时变的.非易失的 操作数据库系统VS数据 ...

  3. 联机分析处理(OLAP)到底是什么?

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来. 当今的数据 ...

  4. 操作数据库系统(OLTP)和联机分析处理系统(OLAP)的区别

    联机操作数据库系统的主要任务是执行联机事务和查询处理.这种系统称为联机事务处理(OnLine Transaction Processing,OLTP) 系统.它们涵盖了单位的大部分日常操作,如购物,库 ...

  5. 杂项-DB:OLAP(联机分析处理)

    ylbtech-杂项-DB:OLAP(联机分析处理) 联机分析处理OLAP是一种软件技术,它使分析人员能够迅速.一致.交互地从各个方面观察信息,以达到深入理解数据的目的.它具有FASMI(Fast A ...

  6. 数据仓库原理<1>:数据库与数据仓库

    updated 2015.8.27 updated 2015.8.26 updated 2015.8.23 0. 说明 <数据仓库原理>系列博文,是笔者在学习数据仓库与商业智能时的读书笔记 ...

  7. 什么是联机分析处理(OLAP)

    OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来. 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction pro ...

  8. 数据仓库原理<2>:数据仓库系统的体系结构

    1. 引言 本篇主要讲述数据仓库系统的体系结构与组成要素.数据集市与数据仓库之间的关系.元数据的定义与作用. 在上一篇,笔者介绍了数据仓库的定义: "数据仓库是一个面向主题的.集成的.不可更 ...

  9. 数据仓库基础(三)OLAP

    本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135589.html 联机处理分析(OLAP):介绍 首先要理解的概念: 1.维度: ...

随机推荐

  1. nodeJS删除文件

    var fs = require("fs"); var path = require("path"); deleteFolderRecursive = func ...

  2. 涨知识,涨知识 :ThinkPHP框架下Where条件查询Mysql数据库某字段是否为空

    代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data ...

  3. 7.24 IO多路复用和协程代码笔记

    1. 复习 # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/23 11:49 # !@Author TrueNew ...

  4. 对crf++的template的理解 ©seven_clear

    这是以前的一篇草稿,当初没写完,今天发出来,但总觉得水平有限,越学越觉得自己菜,写的博客水准低,发完这篇以后就谨慎发博了,毕竟自己菜,不能老吹B,下面是原稿. 好久没更了,本来年前想写篇关于爬虫的总结 ...

  5. ELk之使用kibana展示访问IP地图

    参考文档:http://blog.51cto.com/ls40905250/1915280 https://blog.csdn.net/zsjwish/article/details/79792212 ...

  6. java 中静态变量(类变量)与实例变量 静态方法与实例方法

    静态变量: 在类内部中,方法的外部声明的对象而且加上static; 实例变量: 在类内部中,声明不需要加static; 比如: public class Demo{ int i1=0; static ...

  7. 1.9TF的过拟合-dropout

    不带dropout程序并通过tensorboard查看loss的图像 """ Please note, this code is only for python 3+. ...

  8. mysql跨库联表查询

    首先要了解database与instance区别,见<MySQL中的实例.数据库关系简介> 跨库分为同一个instance下的跨库和不同instance下的跨库. 一.同一个MySQL实例 ...

  9. JSP学习_02

    JavaBean是特殊的Java类,使用Java语言编写,遵守JavaBean规范JavaBean同其他Java类一些独一无二的属性:拥有一个默认的构造函数需要被序列化并实现Serializable接 ...

  10. cordova 跨平台APP版本升级

    利用cordova+ionic开发好项目,之后就是打包发布,在这之前,还要做一个版本升级的小功能. 首先我们项目根目录里自然少不了配置:config.xml中 如图.version,我们以后每次升级A ...