文章目录

  • 数据仓库
  • 多维数据模型
    • 事实表和维表
    • 数据立方体和OLAP
      • OLAP的基本操作
      • 维和立方
  • 数据立方体实例
  • 数据立方体物化

数据仓库

数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用。因此数据仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层——源数据、数据仓库、数据应用:

数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。

多维数据模型

多维数据模型是为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型,其基本的应用是为了实现OLAP(Online Analytical Processing)。

事实表和维表

事实表是用来记录具体事件的,包含了每个事件的具体要素,以及具体发生的事情;维表则是对事实表中事件的要素的描述信息。比如一个事件会包含时间、地点、人物、事件,事实表记录了整个事件的信息,但对时间、地点和人物等要素只记录了一些关键标记,比如事件的主角叫“Michael”,那么Michael到底“长什么样”,就需要到相应的维表里面去查询“Michael”的具体描述信息了。基于事实表和维表就可以构建出多种多维模型,包括星形模型、雪花模型和星座模型。

这是一个最简单的星形模型的实例。事实表里面主要包含两方面的信息:维和度量,维的具体描述信息记录在维表,事实表中的维属性只是一个关联到维表的键,并不记录具体信息;度量一般都会记录事件的相应数值,比如这里的产品的销售数量、销售额等。维表中的信息一般是可以分层的,比如时间维的年月日、地域维的省市县等,这类分层的信息就是为了满足事实表中的度量可以在不同的粒度上完成聚合,比如2010年商品的销售额,来自上海市的销售额等。

数据立方体和OLAP

数据立方体(Data Cube),只是多维模型的一个形象的说法。立方体其本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度。

OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别如下:

OLAP的基本操作

OLAP的操作是以查询——也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。OLAP正是基于多维模型定义了一些常见的面向分析的操作类型是这些操作显得更加直观。

OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot)。

  • 钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对2010年第二季度的总销售数据进行钻取来查看2010年第二季度4、5、6每个月的消费数据,如上图;当然也可以钻取浙江省来查看杭州市、宁波市、温州市……这些城市的销售数据。
  • 上卷(Roll-up):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如上图。
  • 切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者2010年第二季度的数据。
  • 切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据,或者是电子产品和日用品的销售数据。
  • 旋转(Pivot):即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。

维和立方

维(Dimension)
维是用于从不同角度描述事物特征的,一般维都会有多层(Level),每个Level都会包含一些共有的或特有的属性(Attribute),可以用下图来展示下维的结构和组成:

以时间维为例,时间维一般会包含年、季、月、日这几个Level,每个Level一般都会有ID、NAME、DESCRIPTION这几个公共属性,这几个公共属性不仅适用于时间维,也同样表现在其它各种不同类型的维。

Hierarchy

上面这个结构的维是无法直接应用于OLAP的,OLAP需要基于有层级的自上而下的钻取,或者自下而上地聚合。所以每一个维必须有Hierarchy,至少有一个默认的,当然可以有多个,见下图:

有了Hierarchy,维里面的Level就有了自上而下的树形结构关系,也就是上层的每一个成员(Member)都会包含下层的0个或多个成员,也就是树的分支节点。这里需要注意的是每个Hierarchy树的根节点一般都设置成所有成员的汇总(Total),当该维未被OLAP中使用时,默认显示的就是该维上的汇总节点,也就是该维所有数据的聚合(或者说该维未被用于细分)。Hierarchy中的每一层都会包含若干个成员(Member),还是以时间维,假设我们建的是2006-2015这样一个时间跨度的时间维,那么最高层节点仅有一个Total的成员,包含了所有这10年的时间,而年的那层Level中包含2006、2007…2015这10个成员,每一年又包含了4个季度成员,每个季度包含3个月份成员……

每个Hierarchy都包含了一个树形结构,但维中也可以包含多个Hierarchy,正如上图所示,维中的Hierarchy相互独立地构建了自己的树形结构。还是以时间维为例,时间维可以根据日历(Calendar)时间组建日历的Hierarchy,也可以根据财务(Fiscal)时间组建财务的Hierarchy,而其中财务季度的划分可能并不与日历一致,基于这种多样的Hierarchy,我们在组建多维模型时可以按需选择合适的,比如给财务部的数据分析模型选用财务Hierarchy,而其他部门的分析人员显然希望看到日历样式的Hierarchy,这样就完美地满足了不同的需求。
 
立方(Cube)
这里所说的立方其实就是多维模型中间的事实表(Fact Table),它会引用所有相关维的维主键作为自身的联合主键,加上度量(Measure)和计算度量(Calculated Measure)就组成了立方的结构:

度量是用于描述事件的数字尺度,比如网站的浏览量(Pageviews)、访问量(Visits),再如电子商务的订单量、销售额等。度量是实际储存于物理表中的,而计算度量则没有,计算度量是通过度量计算得到的,比如同比(如去年同期的月利润)、环比(如上个月的利润)、利率(如环比利润增长率)、份额(如该月中某类产品利润所占比例)、累计(如从年初到当前的累加利润)、移动平均(如最近7天的平均利润额)等,这些计算度量在Oracle中都可以借助分析函数直接计算得到,相信大部分的OLAP组件都会提供类似在时间序列上的分析功能。而这些计算度量往往对于分析而言更具意义,立方中借助与各个维的关联关系从不同的角度和层面来展现这些度量。

数据立方体实例

数据立方体是数据仓库和OLAP的基本工具。从概念上讲,数据立方体是一个多层次、多维的数据库,具有各种不同的粒度聚合。它是group-by操作符的泛化,包含与维列表的所有可能组合对应的group-bys。

例子:在一个marketing management data warehouse中,以模式 sales(Store, Product, Season, Sale) 进行数据收集。基本事实表如下图,属性Store, Product,Season被称为维度,Sale被称为度量。

数据立方体是由{Store, Product, Season}的每个子集组成的groupBy分组(共有8个groupBy),使用诸如AVG(Sale)这样的聚合函数,进行分组聚合返回的结果集。每个group by对应于一组单元格。如下图所示,维度中的符号“*”表示将该维度一般化,以便匹配其域中的任何值。数据立方体如下图:

数据立方体物化

分组的属性的组合叫方体(cuboid),数据单元(cell)就是方体中的一个元组,分组的属性有 i 个的方 体称为 i 维方体。例如创建一个数据仓库 sales 用来记录商店的销售,包括四个维 分别是 Product(产品)、Time(时间)、Location(城市)、Sales(销量),将 不同属性聚集数据可以形成 0 维方体,1 维方体,2 维方体,3 维方体,4 维方体 方体形成的数据立方体的格如图所示。

数据立方体是由原始数据事实表中记录的所有方体构成的。通过原始数据来构建数据仓库时,直接获得的只有包含数据立方体中的基本方体(上述四维方体),而想要获得所有方体,必须通过相关操作聚集物化。对于一个 n 维数据立方体来说,包含的方体的总数为:

其中 Li 为第 i 个维度的维度层次(level)数。

所以对于一个多维度、多层次的数据立方体,其方体的数量多,计算全部的方体是耗时耗空间的工作。因此对于不同体量的数据立方体应 该采取不同的物化策略,对于数据立方体的物化方法,大致包括:全物化、部分 物化、不物化这三种。

  • 全物化是指计算并存储当前数据可以聚集物化获得的所有方体的结果,覆盖整个数据立方体。当维度、维度层次数量较多时,全物化需要花费大量的时间和 空间来计算和存储这些方体。全物化带来的好处主要是可以显著提高查询的效率。 由于所有的方体都已经被计算和存储,因而查询时可以直接获得结果。
  • 部分物化是指针对数据立方体可以获得的方体,进行有选择性地计算并部分 存储,这种方法需要花费旳时间少于全物化,具体的时间与选择物化的方式有关。 对于查询而言,如果查询的数据是已经物化的,则查询效率高、若查询的数据没 有被物化,则查询效率与不物化相同。
  • 不物化是指仅保留数据立方体中的基本方体,即最详细的记录,不计算任何其他聚集后的方体。这种方法虽然省时省空间,但是在查询时,只要查询记录不是基本方体,都需要进行相关的计算才能获得查询结果,查询效率最差。

上一节中的数据立方体实例即为全物化。

针对于数据立方体存储的研究,很多学者提出了不同的压缩模型,例如冰山立方体、封闭立方体、商立方体等等。封闭立方体在物化过程中,只保存了所有等价类的上界。因此在封闭立方体中,只包含封 闭单元。传统的封闭立方体虽然可以有效地对原始立方体进行压缩,但是它存在一个缺点:无法对非单调聚集函数进行支持。冰山立方体和封闭立方体都实现了数据立方体的压缩,但是没有考虑方体之间的语义关系。然而在大部分的数据查询 中 , 都 需 要 通 过 方 体 间 的 语 义 来 获 得 结 果 。 在 这 个 前 提 下 Laks V.S.Lakshmanan等首次提出了商立方体的数据压缩模型。

参考博客:
http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/
http://webdataanalysis.net/web-data-warehouse/data-warehouse-frame/
http://webdataanalysis.net/web-data-warehouse/multidimensional-data-model/

参考文献:
《分布式环境下多维空间联机分析缓存模型研究》

OLAP和数据立方体相关推荐

  1. 数据仓库、OLAP和数据立方体

    文章目录 数据仓库.OLAP和数据立方体 1. 数据仓库 1.1. 数据仓库定义 1.2. 关键术语解释 2. 数据仓库和数据库的区别 3. OLAP 3.1. 基本概念 1) 维 2)操作 3.2. ...

  2. 数据挖掘与数据仓库——数据仓库、 OLAP及数据立方体计算

    数据仓库. OLAP及数据立方体计算 什么是数据仓库 有多种但并不严格的定义 与操作数据库相隔离并单独维护的一个用来支持决策过程的数据库. 一个用来对整理过的历史数据进行分析以便支持信息处理的固定平台 ...

  3. 【数据立方】数据立方体的有效计算、物化materialization,索引OLAP数据

    一.数据立方体的有效计算 多维数据分析的核心是有效计算多个维度合上的聚集.按SQL术语,这些聚集称为group-by. 对于n维的立方体,包括基本立方体总共有(2的n次幂)个方体.(假设每个维没有分层 ...

  4. 【数据挖掘笔记五】数据立方体技术

    5.数据立方体技术 数据仓库系统在各种粒度上为多维数据的交互分析提供OLAP工具,OLAP工具使用数据立方体和多维数据模型对汇总数据提供灵活的访问,因此重点要关注数据立方体的技术.数据立方体技术包括数 ...

  5. mysql构建数据立方体_OLAP数据建模工具Workbench的初步使用(数据立方体的建立)

    OLAP数据建模工具Workbench的初步使用(数据立方体的建立) 概要: 1.workbench工具简介 2.workbench简单操作(附demo) 3.workbench初步使用总结 1.wo ...

  6. 数据挖掘:概念与技术 第五章-数据立方体技术

    数据立方体技术: 基本方体的单元是皆不能单元,非基本方体的单元是聚集单元 聚集单元在一个或者多个维上聚集,其中每个聚集维用单元记号中的星号指示.假设有一个n维数据立方体,如果a中恰有m个值不是星号,则 ...

  7. 数据立方体(Cube)

    如上图所示,这是由三个维度构成的一个OLAP立方体,立方体中包含了满足条件的cell(子立方块)值,这些cell里面包含了要分析的数据,称之为度量值.显而易见,一组三维坐标唯一确定了一个子立方. 多位 ...

  8. 【读书笔记-数据挖掘概念与技术】数据立方体技术

    基本概念: 基本单元:基本方体的单元 聚集单元:非基本方体的单元 冰山立方体:部分物化的立方体 最小支持度(最小支持度阀值):部分物化的最小阀值(说白了就是限定了一个范围) ∵冰山立方体仍有大量不感兴 ...

  9. 5.数据立方体计算与数据泛化

    1.两种不同类别的数据挖掘方法 描述性挖掘: 数据泛化 预测性挖掘:分类.回归分析 2.数据立方体的物化 3.数据立方体.闭立方体.立方体外壳和和计算策略搭档大裆..喜欢西幻 4.什么是概念描述 概念 ...

最新文章

  1. AcWing 2984. 线段 / POJ3304(计算几何、常用技巧转换)
  2. 学习PHP 逛的几个网站。
  3. bzoj4592[SHOI2015]脑洞治疗仪
  4. BIEE汇总数据如何放在后面
  5. 协议森林01 邮差与邮局 (网络协议概观)
  6. Kali渗透测试技术实战
  7. figma下载_搬到Figma对我意味着什么
  8. linux mint php mysql_linux mint 下mysql中文支持问题
  9. 区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程
  10. Atitit 在线机器人 自动化技术一览 目录 1. 俩个要点 1 1.1. 识别控件(对话框 按钮 列表等) 1 1.2. Dom控件操作 1 1.3. 鼠标键盘操作 api 1 2. 可以使用
  11. OpenCore配置文字说明(第二版)基于056(03-02官方正式版)
  12. js读取excel中日期格式转换问题
  13. jdbc连接timesten_Java 连接 timesten
  14. 能测电机温度和振动在线测量工具——温振变送器
  15. nodejs中字符串和json转换
  16. SQLite读写同步之WAL机制
  17. 树莓派调节显示屏分辨率
  18. 计算机桌面锁屏设置,怎么设置电脑锁屏
  19. OpenCV入门(七)快速学会OpenCV6色彩空间
  20. 上面两点下面一个三角形_解三角形的新视野——定角对定边~

热门文章

  1. 1251:丛林中的路
  2. vue报错:the template root disallows ‘v-for‘ directives解决办法
  3. linux shell响铃程序,响铃提示命令
  4. 【git 整理提交】git rebase -i 命令详解
  5. python数据可视化(matplotlib,seaborn,plotly)
  6. 第十七周 项目6.1 求出每名同学的总分和均分
  7. 2021 Macbook Pro 14 频繁问题回答
  8. ffmpeg截取视频片段的两种方式 1) 按时间截取 2)按帧数截取
  9. woff字体图元结构剖析,自定义字体的制作与匹配和识别
  10. p2p 企业信贷 UML 跨行清算