《分析服务从入门到精通读书笔记》第一章、数据分析中的维度(3)

目的

学习数据中的维度

内容

维度分析是Bi开发中很重要的概念,为了帮助理解维度,让我们回顾一些文提到的报表。看一下AWC公司月度销售量表重新显示如下:

表1.8 AWC公司月度分析报表

2011年1月 2011年2月 2011年3月 2012年4月
4 14 27 25

 

在这份报表中,总的销售量按照月度属性进行了划分,月数(4)决定了报表中值的数目。这和现实世界中计算线性距离相似:一条线的长度就是线长。

表1.9 AWC公司按模型和月份列出销售报表

       模型        2011年1月   2011年2月      2011年3月        2011年4月 
   Mountain-500  3 8 6 6
   Road-750     15 16
   Hick Rack 1 6 6 3

 

表1.9显示了按照“模型”和“月份”列出的销售列表。即前面的表1.7。在这份报表中,月度销售量进一步按照“模型”属性进行了细分。报告中值的数目等于模型数目等于模型数和月数之积,因此,最多只考虑12个值。这和现实世界中计算矩形面积相似:矩形的面积等于其长度和宽度的乘积。这份报告甚至看上去都像矩形。

 然而,将报表比喻成矩形,是就计算值的数目而言,而不适合比喻报表的外形,我们可以很容易的重新组织报表,将月份属性作为行,重新组织后的报表如表1.10所示。

表1.10 AWC公司按模型和月份报表

   Hitch Rack    2011年1月      1                                                        
   Hitch Rack 2011年2月  6
   Hitch Rack 2011年3月  6
   Hitch Rack 2011年4月  3
   Mountain-500 2011年1月  3
   Mountain-500 2011年2月  8
   Mountain-500 2011年3月  6
   Mountain-500 2011年4月  6
   Road-750 2011年1月  
   Road-750 2011年2月  
   Road-750 2011年3月 15
   Road-750 2011年4月 16

不管报表中的值是按照表1.9那样以矩形方式排列或是按照1.10以线性方式排列,只要有4个“月份”属性成员和3个“模型”属性成员,就会有12个值。这是因为“模型”属性成员和“月份”属性成员之间是相互独立的。每个模型都有月销售量,即使每个值为0。

现在考虑一份新的报表。假设AWC公司在两个不同的州销售产品,我们希望得到每种产品在每个州的销售量,同时,还需要查看每个月的销售量和所有月份的总销售量。为了生成这份报表,分析员将“州”属性添加到报表的行,同时用“月份”属性层次结构替换“月份”属性。新的报表如表1.11所示

表1.11 AWC公司按州、模型和月份列出的销售量报表

         州                   模型                   所有月份              2011年1月              2011年2月                 2011年3月                 2011年4月         
WA  Hitch Rack  9    4  3  2
 Mountain-500  18  2  6  5  5
 Road-750  19      9  10
 OR  Hitch Rack  7  1  2  3  1
 Mountain-500  5  1  2  1  1
 Road-750  12      6  6

这份报表有2个“州”属性成员,3个“模型”属性成员和5个“月份”属性层次结构成员。值的最大可能数目是30,等于州数目、模型数目和月数的乘积。这和现实世界中计算立方体的体积相似:立方体的体积等于其长度、宽度和高度的乘积。

显然,将报表比作立方体,是就计算立方体的数目而言,而不是指定其实际外形。表1.11中的值是按矩形组织的,表1.12显示了表1.11中的前几行,所不同的是月层次结构已被放在行上。这份报表与表1.11有相同的信息,但它的值是按线性方式排列。

表1.12 AWC公司按州、模型和月份列出的销售量报表

          州                    模型                月份                      销售量            
WA Hitch Rack 所有月份 9
WA Mountain-500 所有月份 18
WA Road-750 所有月份 19
OR Hitch Rack 所有鱼粉  7
OR Mountain-500 所有月份  5
OR Road-500 所有月份 12
WA   Hitch Rack 2011年1月  
WA Mountain-500 2011年1月 2
WA Road-500 2011年1月  
OR Hitch Rack 2011年1月 1
OR Mountain-750 2011年1月 1
OR Road-750 2011年1月  
WA Hitch Rack 2011年2月 4
WA Mountain-500 2011年2月 6
WA Road-750 2011年2月  

 无论以什么形式显示报表,州、模型、月份都是独立的属性和层次结构,报表中的值的总数等于第一个独立属性成员数(2个州),第二个独立属性成员数(3个模型)和独立属性层次结构成员数(5个月)之积。

为了计算长度、面积或体积,我们将物体各维度的长度相乘。同样,为了计算报表中的值的数目,我们将报表中独立属性和层次结构中的成员数目相乘。独立属性和层次结构就是报表的维度,因此商业智能的专业人员从数学中借用了维度(dimension)这个词。维度包括属性和层次结构。例如,在表1.1所示的报表中,州的属性等于地理维度,模型属性属于产品维度,月属性层次结构则属于日期维度。虽然维度是从数学中借用的概念,但是要注意的是,数据分析中的维度和现实世界中的维度有很大不同。使用维度这个词并不意味着解决了属性和层次结构在报表中如何组织或者多维数据在数据库中如何存储等问题。

一个维度可能不止包含一个属性,但每个维度有且仅有一个关键属性。其他与关键属性相关的属性都等于同一个维度。由于属性属于维度,属性成员也即维度成员。举例来说,产品是产品维度的关键属性,如果知道了产品属性的值,就能知道对应的模型、颜色和尺寸属性的值,因此,这些属性也都属于产品维度。银色是颜色属性的一个值,48是尺寸属性的一个值,所以银色和48都是产品维度的成员。

维度中也包含层次结构。在上章中提到过,层次结构是通过将属性组织为级而创建的。用于创建层次结构的属性必须属于同一维度,同时该层次结构也属于该维度。例如,基于模型层次结构的产品也包含在产品维度中的属性组成,因此,基于模型层次结构的产品也属于产品维度。

包含度量值的维度在结构上与其他维度不同。度量值属性和层次结构不是由度量值创建的。相反,只有包含属性标签列别的度量值维度能标识度量值。看下面图1.13显示了将度量值维度中的销售量和销售额乘以按列排列的报表。

表1.13 AWC公司按州、模型和月份列出的销售额度报表

     州            模型                   2011年1月                      2011年2月                     2011年3月                          2011年4月          
销售量 销售额/美元 销售量 销售额/美元 销售量 销售额/美元 销售量 销售额/美元
 WA    Hitch Rack      4  480  3  360  2  240
 Mountain-500  2  1105  6  3265  5  2775  5  2750
 Road-750          9  4860  10  5400
 OR    Hitch Rack  1  120  2  240  3  360  1  120
 Mountain-500  1 565  2  1105  1  540  1  540
 Road-750          6  3240  6  3240

这份报表包含了4个维度:时间、地理、产品、销售量。报表中的值的数目等于依旧等于每个维度成员之积:2*3*4*2,即48。但这次并没有(也没有必要)现实世界的比喻与之对应。记住,维度只是一种将相关属性和层次结构进行分组的有效方法,4个(或20甚至60个)维度通3个维度一样可行。增加一个维度仅仅增加了显示在报表中或存储在数据库中的值的数目。

在现实世界中,测量的对象随其维度数目变化而变化。例如,一维的尺寸是线性英寸,但二维的英寸是平面英寸,三维的英寸是立方英寸。基于立方英寸的对象完全不同于基于平面英寸或线性英寸的对象。然而,在报表中,向多个维度增加属性和层次结构,被度量的对象还是相同的,即数值。在“四维”报表中的数值和在“一维”报表中的数值是相同的。在报表中,增加维度只是创建一个新的、独立的细分度量值的方法。

正如表1.13所示,增加第四维度并没有将矩形结构的报表变成立方体结构的报表,但并不是说增加新的维度是无关紧要的。假设报表一开始有两个维度:30个产品和12个月,即有360个可能的值。向产品维度中新增3个成员将使报表值的个数增加到396个,即10%的增长。然而如果新增加包括3个成员的第三个维度则将使报表值的个数增加到1080个,将近300%的增长。考虑一个极端情况:有一个包含128个成员的维度,则报表中可能的值有128个,但若将这些同一个维度的128个成员分成64个维度(即每个维度有2个成员),则这份表会有18 446 744 073 709 551 616个可能的值!

总结

本文主要介绍了多维数据分析,一个维度数据模型包括度量值、能被聚合的数值和能被组织成维度的相关属性和层次结构。维度提供了元数据,使数据值数据变成了信息,同时使相关分析成为可能。维度提供了数值的描述性标签。使我们能够知道如何将数据分组、排序、转换和聚合。

维度数据模型能在关系型数据库管理系统(RDBMS)或多位OLAP数据库中实现。实际上对于一个商业智能系统而言,通常同时使用了上述两者,从源系统获得数据被提取、转换并被加载到存储于RDBMS中的数据仓库里,然后,数据从仓库中提取出来被加载到OLAP数据库中,在后文中,我们将学习如何在这两种形式的数据库中实现维度模型。
 

posted @ 2012-02-29 15:59  指尖流淌  阅读(1255)  评论(2编辑  收藏  举报