华远智德(北京)科技有限公司 Jupiter Consulting (Beijing) Ltd.
  
技术讲堂


您的位置: 首页 技术讲堂 第三课 维度的内部结构
        第二讲 非层次结构(2)

数据分析讲堂

第三课 维度的内部结构

第二讲 非层次结构(2)

(3)排序

       有些读者可能已经从一些统计方面的书籍中知道了名词(nominal)、序数(ordinal)和基数(cardinal)序列之间的差别。一组政党或者赛跑者的列表是一个典型的名词序列。赛跑者在公路赛跑中的名次则是一个序数序列。而整数则是基数序列的一个例子。

       由于维度层次的某些区别是由于排序不同造成的,排序的不同对于类型上的可行的操作有很大的影响,排序在维度分析中是一个非常重要的概念,因此我们将对不同的排序做详细的介绍。这里使用的矩阵应该被看做关系左边的实例I和关系右边所有可能实例iªn的一种简洁的表示方法。矩阵单元中的每一个等号表示了代表左边元素的行号i和代表右边元素的列号j之间的关系。

                   名词排序实例

       如果实例是名词排序的,那么任何两个实例之间的关系只能是等于(=)或者不等于(≠)。表3.2.1描述了由4个实例组成的维度,以及每两个实例之间可定义的关系。实例中的上标a表示了其位于关系的左边。而带有上标的实例表示其位于关系的右边。

       由名词排序实例组成的类型可以使用类似集合的操作,如连接、交叉和联合。它们支持的唯一的比较操作是相等比较。名词排序实例无法使用差别比较操作或者方向性操作,例如向前、下一个、第一个、最后一个。大多数的OLAP维度,例如商店、产品、客户和渠道对于用户来说都是名词排序的(虽然OLAP工具可以自动将一个序数值如装载时间或数组顺序和一个用户定义的名词维度联系起来)。

                   序数排序实例

如果你可以对实例进行排序,但是不能衡量它们之间的具体的差别,那么这些实例就是序数排序实例。

       现在除了可以对两个实例比较是否相等,序数实例还支持传递比较:i2大于i1并且小于i3。这也正是使用下一个、上一个、第一个、最后一个等常用维度应用方法的基础。这些操作可以泛化成开始点、偏移量和方向。开始点经常是当前游标的位置或者序列的第一个或最后一个实例。

       通常来说,维度可以被定义成带有等级的序数,或者带有基数特征的名词维度。例如:商店维度,一个典型的名词维度,可以根据大小和年代来进行排序,或者根据销售额和利润度量来排序,等待。

       当特征和度量用来对一个维度进行排序的时候,可以使用很多有用的排序方法。更进一步的是,相对排序函数例如前一个、后一个、前三个,当使用维度的不同排序方法的时候,会返回不同的结果。因此,有必要为每一种排序起一个名字,然后在相对位置函数中引用这些排序。例如,表达式:

Store.(size_order,this-1)

将会引用根据大小排序的商店维度中当前位置的前一个实例,而表达式:

Store.(age_order,first+3)

将会引用按照时间排序的商店维度中的第四个实例。

         当你为名词维度中的实例创建一个排序的时候,需要注意避免将多个排序实例与单个确定的位置联系起来。因此,如果你将商店按照占地面积做了排序,同时又有多个商店具有相同的占地面积,你必须考虑如何避免多个实例对应于同一个排名的问题。你可以将这些具有相同占地面积的商店如图3.2.1所示那样随机排列,或者采用第二个排序字段,例如按照每平米的租金对这些商店进行排序——虽然这种方法还不能保证解决这个问题,因为所有商店的租金并非完全不同,或者你也可以将这些具有相同占地面积的商店就看作是相同的实例。其他维度的值可以按照图3.2.2所示的类型进行汇总。


Geography.levels.彐 Province,City

Geography.City.彐 Shanghai,Guangzhou,Tianjin

Geography.Province.彐 Guangdong,Shanghai, Tianjin

       和谈论月份和年份之间的换算系数一样,我们也可以说城市和省份之间的换算系数。唯一的区别在两个维度之间,换算系数并不是一直固定的。例如,在广东的城市和省份之间的换算系数是3:1,而在上海的城市和省份之间的换算系数是2:1。虽然城市是名词排序的,省份也是名词排序的,但是每个城市和省份都具有一定的级别或度量,就象月份——年份和米——千米的例子一样,它们同样可以定义规则、换算系数及允许的操作。因此,度量的概念,在这里已经泛化,并不局限于基数排序的维度,而是适用于所有的维度,不管它们的排序是怎样的。

       既然维度表示了一系列特定度量下的实例,而且有可能和一个实例相关的度量会不止一个,就象前面的城市——省份例子,因此有必要为类型或维度的每个实例确定一个度量,如下所示:

Geography._Province.Guangdong,Province.Shanghai,Province.Tianjin,City.guangzhou,City.Shanghai,City.Tianjin

(5)层次的度量基础

       当一个维度由不都属于同一个度量的实例组成的时候,不同度量的实例之间需要能够进行定量的比较。如果你回顾一下所熟悉的多层维度,就会发现这个需求是显然的。例如,天、月份和年份属于一个层次维度,它们之间都可以定量比较的。任何属于天的信息都可以转换到月份或者年份上。另一方面,实例.度量对的集合:红色.颜色、蓝色.颜色、绿色.颜色、小.尺寸、中.尺寸和大.尺寸,它们是不能进行定量比较的度量,因为颜色和尺寸不具有可比性。因此,这两组实例的集合应该属于不同的维度。

       图3.3.1使用分类树对以上讨论的饿各种类型进行了总结。回忆一下,之前我们介绍过一个合法的类型应该具有的条件,每一个类型至少需要两个惟一而且互斥的实例。每一个实例都与一个度量相联系。如果所有的度量都是相同的,那么这个类型就是非层次的。如果存在两个或者更多的度量,而且它们之间具有定量的可比性,这个类型就是层次类型。如果存在两个或者两个以上的度量,但是它们之间并不完全具有定量的可比性,这个类型就是非法的。

按此在新窗口浏览图片

按此在新窗口浏览图片

基数排序实例

如果你可以在实例之间分配距离和比较它们的差别,那么这些实例之间的关系就是基数关系。

     虽然对一个名词维度进行基数排序有很多方法,但是在OLAP的标准应用中,一般都是将基数的特性直接在维度的定义中体现,而很少将名词维度基数化。在高级的OLAP应用中,基数序列维度是更为常见的一种形式。

     商店本来是一个名词字段,但是我们也可以按照大小、时间、销售额、利润等进行基数排序,从而转换成一个基数字段。基数排序和序列的差别可以从下面的例子中发现。表3.2.1显示了某个商店在一段时间内的交易总数,以及不同金额的交易出现的次数。

按此在新窗口浏览图片

3.2.3显示了按照销售额排序的交易次数的柱状图。其中的X轴按照从小到大的方式显示了交易的金额。整个柱状图显示了交易次数的分布基本上是满足正态分布的,排在中部的4个数据拥有最大的概率。

与之相对比,图3.2.4中的柱状图根据销售额的基数排序方式显示了次数的分布情况。图中X轴从0元到500元按照等距的方式显示了销售额。在按照基数方式显示的时候,那些销售次数为0的销售额依然会显示在图形中。从图中我们可以看出整个分布呈现双曲线的样式,经常出现的是在125元左右到325元左右的数额。

按此在新窗口浏览图片

除此之外,在基数维度上你还可以进行各种数学计算。例如,你可以采用如下公式计算客户生命周期内产生的收入和该客户的生存时间的比例:

First_sale{date}- First_contact{date} / Last_sale{date}- First_sale{date}

你还可以使用如下的表达式定义区间和增长函数,该函数是基于两个事件之间的时间定义的,例如,第一次合同的时间和最后一次销售的时间,然后可以乘上其他一些条件函数,例如经济增长情况或者是产品价格等。

Time{First_sale{date} – First_conact{date} * Growth_Factor per day{Integers}}

  

        首页   |  公司介绍   |  服务理念   |  经营管理   |  企业管理 【TOP】      
版权所有 © 2015 jupiterst.com