olap建模中的统一维度方法讨论

  作者:姜玲
2007/4/28 10:54:52
本文关键字: ttnn 2006年08期

Zhu Sizheng 20060815

在erik thomsen的olap解决方案:创建多维信息系统一书中,提到的将所有维度统一对待的方法,称为统一维度方法,前面看微软的东西,也有udm(统一维度模型)这样一个概念,是越看越糊涂,不知道哪位大哥能帮助解释一下.
 
统一维度方法是否就是指将所有的结构化(?)的元数据用统一的维度定义?也就是不区分维度和度量?如果不区分维度和度量的话,如何对数据进行计算?头大..........
 
如果区分维度和度量,本质上的区别在什么地方?对元数据的管理有什么样的影响呢?
 
区分与否的利弊都在什么地方?..............
 
微软anlysis services,oracle的 express ,ibm的 metacube都将度量和维度区分开来.而essbase,holos确将维度平等对待.糊涂了......统一维度方法看来是没有能够占据主流位置,也就是大多常见的系统还是区分维度和度量的,怎么微软又搞了一个统一维度模型?
 
Adam.cao 20060815

Zhu Sizheng,您好!
 
Essbase中是没有度量这个说法。不过有一个account特殊维度,数据计算就集中在此。也可以理解成为度量。其他产品不是很熟悉,请赐教。
 
Qing 20060815

统一维度方法;

统一维度模型;

维度vs.度量;
 
season提到的这几个东西似乎并非指同一个东西吧。对于thomsen提到那个"统一维度方法",没有上下文,也不大明白。但我的第一反应,应该和Kimball提到的一致性维度(confirmed dimension)有些类似,不知是否准确,season是否可以摘录一段上下文来辅助理解一下。有时候仅从字面是很难搞清楚它是什么玩意儿的。
 
如果是那样,应该是只是针对维度。不同的部门,观测一个度量的角度可能不太一样,某个角度包含的内容可能也是由于各自的习惯而不同。例如经常可以看到,一个部门说客户类型,包括集团客户、个人客户,有的可能会将VIP客户加进去。从设计者角度看,这个维度不统一。此处,形成一致的维度,也是一种数据标准化的过程。当然,我不知道这是不是thomsen说得那个词的意思。
 
而微软那个UDM,这里的维度应该不仅仅是指维度,是Dimensional,是修饰模型的。所谓维度模型,也就是Kimball大力倡导的,有维表、事实表构成星型模式或雪花模式的那种模型。因为微软的OLAP服务器是个MOLAP,我想这个UDM是它搞出来,充当ROLAP功能的东西。
 
至于度量是算到维度里面还是单独作为度量,这个问题跟上面的"统一维度方法"和"统一维度模型",俺认为关系不是太大,只是产品设计时候的路线问题。Essbase算是比较早的OLAP产品,八十年代的事情了,同样,Holos也是早期的产品。想想,那个时候,维度和度量这两个词有没有被分开呢?没有查证。可能essbase它当初就是将不同的度量当作一个"度量维度"来设计的。但显然,将这两个概念分开,肯定是更清晰一些。
 
看来,这是个历史遗留问题。

byehill 20060815

维度的统一化模型应该有它的优势所在。举个小例子:

  如果有一个表A:

  Date             Brand     Price
    2006-8-15      N70        3500
    2006-8-15      N70        3600

我们在做OLAP(或报表)的时候,如果需要以天为最小粒度对手机价格分品牌进行分析,并进行价格核算,如果我们将Price设置为度量,那么很显然前端展示出来的价格只能有一个3500(或3600)。如果我们将Price设置为维度,那么我们的问题就迎刃而解了。不过对于价格核算,维度的作用就要相对度量弱一些了,毕竟是一个实体性质的东西。目前这方面还没有研究。以上意见不太成熟,仅供参考,希望交流!

Innovate511 20060816

不知道这些公司的产品有什么更多功能,但如何建模更多应该是建立实际和理论上,可能是工具能帮助建模吧。

我觉得统一维度建模应该是针对整个EDW,也就是Kimball说的conform table,而不是要统一维或者度量。在实际项目中,绝对统一的维或者度量都不是科学的,原因很简单,客户的需求是多样的,你凭啥要统一客户的需求呢?比如时间维,客户关系部门和财务部门对季度或者年的定义不同,如果你统一时间维,如何满足各自的需求呢?再如度量,美国分公司要求金额用美金,而中国分公司要求用RMB,总公司用欧元,这是完全合理的需求,你统一后,如何满足各自的需求呢?

Zhu Sizheng 20060816

谢谢,qing兄,adam.cao,goldfish,byebill,innovate等兄台。
 
我本来的问题没有阐述清楚,是因为当时问得时候我对基本的问题都没想清楚。
 
任何看起来像维度的事物也能被用来作为度量或属性,任何看起来象度量的事物也可以用来作为维度和属性。

统一维度方法:所有结构化的数据用统一的维度定义。也就是说将所有的结构化数据用维度的方式统一对待。如 Essbase中,将变量(度量?朱建秋老师害人不浅啊,我在他翻译的书里前前后后找了几遍,都没有看到变量和度量的区别,也没看到原来的单词是否是同一个字)看成是"变量维度"中的一个成员。(书 p73)

将度量作为度量维度中的一个成员,那么就会隐式地创建一个数据维度。(书 p75)

由此看来,在朱建秋老师翻译的过程中,变量和度量应该是一个单词 variable,而我们平常所说的度量( measure)则被翻译成了测度。我最初对度量的理解就如同刘庆在《ttnn : 度量、指标和指示器之区别》中描述的一样,度量度量就是对一个刻度的丈量,是一个由数字和单位组合的集合的描述,它的值就是确定数字和确定单位组合后的集合,如 30元(还得注明:人民币还是美元,当然这是在元数据中定义的)。
 
那么"将度量作为度量维度中的一个成员"怎么理解呢?

看一个简单的例子。

元数据:

       时间维    商店维    产品维    度量维    数据维?(隐含的)
       1 月        A 店        鞋子       销售      
       2 月        B 店        袜子       成本      
       3 月        C 店        ……       ……      
       ……       ……        ……       ……      
       ……       ……        ……       ……     
 
数据:

时间        商店名    产品名    度量名    数据
1 月        A 店        鞋子       销售       500
1 月        A 店        鞋子       成本       350
1 月        A 店        袜子       销售       450
1 月        A 店        袜子       成本       375
 
在上面的例子中,可以看到度量维度中包含了销售和成本等几个度量,这与我们平时在 微软anlysis services,oracle 的 express , ibm的 metacube 看到的数据存储不同,也就是在这里没有微软anlysis services,oracle 的 express , ibm的 metacube 等中的"度量"的概念。
 
统一维度维度方法这样一来就带来了两个大的问题:

1 :这个隐含的数据维度的问题(在多维数据源中并不包含一个对应于数据维度的元数据,还有就是数据并不都是一个类型的,什么整数,浮点数,货币,分数等…….. ,傻眼了!)

2 :对于上面例子中的数据你怎么计算阿(也就是所谓的断言或者组织良好公式的问题)
 
下面看看所谓的统一维度方法在实际产品中的实现(早期 Essbase,holos 的实现方法?)
元数据:

       时间维    商店维    产品维    度量维    度量范围
       1 月        A 店        鞋子       销售       美元
       2 月        B 店        袜子       成本       比率
       3 月        C 店        ……       ……       个
       ……       ……        ……       ……       ……
       ……       ……        ……       ……       ……
数据:

时间        商店名    产品名    度量名    数据
1 月        A 店        鞋子       销售       500
1 月        A 店        鞋子       成本       350
1 月        A 店        袜子       销售       450
1 月        A 店        袜子       成本       375
 
书上是这么举例,也不明白到底怎么这样就解决了上述的两个问题?幸好,现在大多数主流的 olap都用得是维度和度量区分的方法。
 
统一维度方法带来的好处是什么?不清楚 ….弄清楚了有多大的意义?请各位高见
有这么一个问题:

学生        科目        成绩        考试开考时间        考生交卷时间        考生考试用时(分)
1            A            90                   1: 00                   1: 45                   45
2            A            80                   1: 00                   1: 45                   45
3            A            85                   1: 00                   2: 00                   60
4            A            60                   1: 00                   2: 45                   105
 
 
这里面哪个是纬度?哪个是度量?算了,这个例子不好,度量就两个:成绩和考试用时。本想举一个例子,来实现一下维度 /度量的对称性(也就是说度量在一定条件下也可以作为维度来看待)。不知道哪位老兄能举一个例子?
 
至于 UDM我目前还是不太清楚是个什么东东,慢慢学…….
 
下面是一些和本话题相关的东东:
 
我的问题中相关术语定义:
(------Erik Thomsen 《 OLAP解决方案:创建多维信息系统》                  朱建秋、张晓辉等译)
 
维( Dimension):用做定位器目的的一个类型。是一个由实例、成员、位置、或相同类型单元组成的集合。不同学科的同义包括要素、轴、属性和变量。在一个多维数据集中,每一个数据点与多维中的每个维德一个且仅一个成员关联。在 olap应用程序中,尽管不是逻辑的要求,但维通常被组织到一个或多个层次。
 
定位器( Locator):在一个模型或上下文中,定位器是一些类型,这些类型的值作为约束的值给出,约束是对应于将要进行计算或返回关联约束集合结果值的一个内容集合。
 
测度( Measure):一个单元生成数据类型。尽管在文字表面上,它表示被测量的数据,如被测量的温度或被测量的销售,这个术语已经被几个 olap销售商作为变量的同义词使用,其中变量也包括派生和不可测量的概念。见变量( Variable)或内容(Content )。
 
变量( Variable):一个单位生成数据类型,或者被测量,或者被派生。销售、成本、利润和利润率是典型的变量。依靠 olap工具,变量可以在个体的基础上被处理,并且可以根据变量被组织的方式从维中分离,或可以将他们收集在一个单一的变量维中。
 
值( Value):一个变量的单一实例的数量。例如,$30 可以是一个销售变量的值。
 
内容( Content):在一个查询或模式的语境中,内容是一些类型,这些类型的值是与一个位置集合相关的值。在这种情况下,术语内容粗略地等价于变量,或测度。
 
成员( Member):维或类型中的元素,位置或实例。
 
                                          ------Erik Thomsen 《OLAP解决方案:创建多维信息系统》
                                                 朱建秋、张晓辉等译
 
刘庆兄过去对度量等概念的阐述:

度量,用中文表示可以是名词,也可以是动词。名词的意思可以是 "度量" 的结果值或是指"度量" 过程。动词就是丈量、衡量这个行为。在英文里面,Measure可以是度量值的意思,也可以是作动词,而" 度量过程"这个名词用Measurement 来表示。

因此理解度量这个词,可以从其本身意义理解。度量,其相近含义包括丈量、衡量,首先得有个标准,譬如说丈量得有米尺,衡量有杆秤。度量出来的结果,度量值也就必须是有个单位的。例如重 15斤,长1.4 米等。此处,斤、米就是标准,有了这个标准,不同的度量值才有可能比较,你用15 斤和1.4米 比较可没什么意义。

度量和维度构成OLAP 的主要概念,这里面,对于在事实表或者一个多维立方体里面存放的数值型的、连续的字段,就是度量。这符合上面的意思,有标准,一个度量字段肯定是统一单位,例如元、户数。如果一个度量字段,其中的度量值可能是欧元又有可能是美元,那这个度量可没法汇总。

在OLAP 中还有计算度量的说法,用一个总费用除以用户数,得到每户平均费用。但这究竟还算不算度量了呢?我认为已经不是原本意义上的度量了,只是为了称呼方便而已。

这就得说到指标,英文的Metric 。在绩效管理软件里面,通常是有这个概念的。如果非得给Metric 一个定义,我愿意表述为"它是表示某种相对程度的值" 。区别于上面的度量概念,那是一种绝对值,尺子量出来的结果,汇总出来的数量等。而指标至少需要两个度量之间的计算才能得到,例如ARPU,用收入比上用户数,例如收入增长率,用本月收入比上上月收入。当然可能指标的计算还需要两个以上的度量。

而Indicator 的字面意思为指示器,在KPI 中,最后一个I就是它,但是用中文称呼它的时候,几乎总是叫" 关键绩效指标",而没有叫做" 指标器",也就造成一些混乱。

想想我们身边哪些东西是充当指示器的。红绿灯,提醒行人车辆是否等待或通行;监控室里的警报灯,提醒哪儿出现异常;汽车仪表盘,提醒驾驶员油是否足够,速度如何。它们起到的作用是传递一种宏观的信息,促使人的下一步行动。红灯停绿灯行;看到警报亮起要赶紧派人查看。目前常见的企业绩效管理软件中,仪表盘(有的地方称作驾驶舱)的展示界面也是必不可少,正是用这种直观而比较有象征性的指示器反映企业运营状况。

可以设想提出KPI 的初衷,是希望企业通过一些粗略(非细节)的信息(而非数据)来为下一步的决策作出依据。导致不同的决策行为必定是离散的输入,最简单的就是一个开关,是或不是(例如警报灯)。如果说度量和指标是定量话,指示器就是一种定性的。

现实中,大家对于三者的称呼并不那么严格, "指标" 是最通用的称呼,"度量" 显得有些学术和技术话,而"指示器" 很少听人提起。在电信的经营分析中,确实很多都实现KPI,正如上面所言,领导不可能去看细节的数据,他们关注的是宏观面的经营状况,因此需要一些" 指示器" 来反映。

然而,这些系统中的KPI 并非完全上面提到的指示器,很多系统建设称为度量系统或是指标系统。而对一个企业,哪些指标能够充分反映经营活动,这也是需要精心制定的,而不是让技术部门提出一堆似是而非的指标名称,诸如在网用户数、收入之类,这不是KPI 。
关于这三者的区别,曾经在数据质量的考虑中应用过,参见《 数据质量体系 之 概念 》。再总结一下。

"度量 "是绝对的定量值;

" 指标" 是基于两个或更多度量计算得出的相对值;

" 指示器"是基于度量或指标,并依据某个基准值得到的定性结果;

                                                 ----- 刘庆《ttnn: 度量、指标和指示器之区别》

smailagain 20060821

to  Zhu Sizheng
你的例子:

数据:


时间       商店名    产品名    度量名    数据
1月        A店        鞋子       销售       500
1月        A店        鞋子       成本       350
1月        A店        袜子       销售       450
1月        A店        袜子       成本       375

如果用这种方式存放数据,把成本、销售当作描述性的维度指标,存放在关系型数据库中的话,你会发现,很多SQL很难写:

比如1月份各店、各产品的毛利润(成本-销售)是多少?所以,我觉得,如果采用关系型数据库来存放模型的话,不建议采用这种方式,还是将销售、成本当初度量来对待比较方便。

essbase采用的是Molap形式,文件存储,不用SQL访问,而用MDX语言。也许就不觉得这种方式别扭了(我对essbase也知之甚少)。


Adam.cao 20060821

smileagain,您好!

essbase对于此有2种数据装载方式

1、如你所写

时间       商店名    产品名    度量名    数据
1月        A店        鞋子       销售       500
1月        A店        鞋子       成本       350
1月        A店        袜子       销售       450
1月        A店        袜子       成本       375
2、也可以如下面所写
时间       商店名    产品名      销售       成本
1月        A店        鞋子       500        350
1月        A店        袜子       450       375

2种数据装载方式的不同就在也rule files创建的方式不同。

essbase可以直接调用SQL做数据装载。在7X版本的ASO中是用MDX,BSO方式还有用的MXL脚本。


 
责编:姜玲
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918