多维数据库维度层次的理解
多维度数据库是按照多维数据模型的思想来建立的。而一个多维数据模型是由多个维度和实
事组成。维度是多维数据模型中非常重要的概念,要进行多维分析、编写高效准确的MDX
查询,首先要对维及其维度的概念分层有比较深刻的理解。
维是描述事实的角度,也即观察数据的角度。一个多维数据模型通常都包含多个维度。比如:
描述企业的销售信息这样一个事实,我们就可能要用到客户维度、时间维度、产品维度、仓
库维度等。在多维数据库中,维度表的来源通常都是关系数据库中的基础数据表,如上面提
到的客户维度就来自关系数据库中的客户表,产品维度就来自关系数据库中的产品表等等。
而这些维度表除了与事实表相关联的键属性以外还有很多其它的数据表属性。在基于关系数
据库的查询中,我们可能更多的关注表之间的关系。而在多维数据库中,应该把思维改进一
下,应该理解和注意维度属性之间的关系,分析维度中每个属性之间的关系。而维度属性之
间的关系就引出了本文的中心——维度层次。
还是上面那个企业销售的例子,对于客户维度,除了键属性外,可能还会有客户的名字属性,
所在国家,所在城市以及省,性别,教育情况,职业等信息。通过分析这些属性的值,可以
发现:城市是属于某个省的,而省又是属于某个国家的,所以在这些属性的值中就表现了一
种层次关系。分析这个层次结构如下图:
图一:客户维度属性层次分析图
上图中左边是客户维度表中国家属性,城市属性和省属性所组成的层次表示,右边就是这几
个属性的值之间的关系。在SSAS中,图中左边的部分表示一个层次,这个层次由四个级别
组成,这四个级别分别是:国家,省,城市和客户。在这个层次中国家是粒度最大的级别,
客户是粒度最小的级别。在进行多维数据分析的时候,我们就可能会在这个层次的不同级别
上进行综合或分析,上卷或下钻。
维度中的层次关系有的时候是隐含的,由数据的意义表示。所以维度层次有的时候可以自动
生成,但更多的时候是人为定义的。对维进行概念分层使得我们可以在任意的抽象级别分析
数据。
在SSAS中有一些与层次相关的函数,要利用好这些函数,其前提就是要理解维度的层次结
构。这些函数我将会在另一篇文章中介绍。