本博文章除在标题明确注明 [转载] 外,均为作者原创!若无特别注明,本博所有原创文章均为IT168首发!任何个人/团队/公司在未经作者同意下不得擅自转载!

Key Attribute和Key Column:苹果和桔子

上一篇 / 下一篇  2008-07-19 21:49:15 / 个人分类:SQL Server 2005

SQL Server 2005分析服务里面的Key Attribute和Key Column有什么关系呢?”今天在和一伙对微软的分析服务和商业智能技术感兴趣的朋友们聊天的时候,有几位突然问了这个问题。

确实,两个概念里面都有Key这个字,但是他们之间究竟有什么关系呢?我的答案是他们就是苹果和桔子,没有多大关系。两个概念虽然都是在多维数据库的维度对象中存在的,但是两者扮演的确实截然不同的角色。

Key Attribute

Key Atribute是一个维度的主键属性,Key Attribute决定了一个维度实例中成员的最小粒度取值。拿日期时间举个例子,如果时间维度中我们设置一个精度为小时的日期时间值或与其一一对应的某列作为Key Attribute,那么就代表时间维度最小粒度的成员就应该是表示一个精度到小时的确切时间,如果Key Attribute是天,那么时间维度最小粒度的成员就是精度到天。

正是因为如此,维度的Key Attribute也是用于连接维度与度量组、维度与维度之间的连接依据(除了事实维度关系外,这种维度关系表示维度成员和度量值成员是一一对应的关系)。那上面的例子来说,如果我们设置一个精度为小时的字段为Key Attribute,那么我们度量值在时间维度上的聚合就可以达到小时级别,否则就只能达到天级别。

因此,一个维度,只能有一个Key Attribute,就像一张关系型的表只能有一个主键一样(要说这两者概念差不多也没有大错,通常维度表的主键就是维度的Key Attribute)。

Key Column

那么Key Column呢?Key Column是用来确定一个Attribute成员取值的标准的列或列的组合。一个Attribute的成员通常是该Atrribute在数据源对应维度表中的列中的所有唯一值(注意,是唯一值),例如商品类别名称,如果你在商品类别表中有30个唯一值,那么商品类别Atrribute就会生成30个成员。

不过这种情况会有特例,比如说时间维度,时间维度表里面的Semester,如果我们仅仅依据Semester来判断Semester Attribute的成员的,那么这个Attribute就只会有2个成员:上半年和下半年,而实际情况并非如此。

2002年的上半年与2003年的上半年在Semester Attribute中通常应该被看作是不同的Memeber,除非用户希望认为2002年的上半年和2003年的上半年应该被视为同一个成员。那么如何让分析服务在计算多维数据库的时候能分辨出2002年的上半年和2003年的上半年呢?就必须要在Semester的Key Column里面同时绑定Year和Semester两列。那么客户不需要区别呢?当然就只要绑定Semester一个列就可以啦。

因此,一个Attribute里面会有多少个成员,是由这个Attribute的Key Column决定的。说句题外话,至于Attribute中每个成员的显示值和后台实际值,则是分别由Name Column和Value Column决定的。

对于上面这个问题的深入分析就需要看客户的实际需求,如果客户看一下所有销售定单中上半年的退订率和下半年的退订率,那么在Semester Attribute中同时绑定Year和Semester就不能直接给出正确的结果。


TAG:

小鱼的空间 引用 删除 superfish1983   /   2008-07-23 19:15:09
3
引用 删除 canonzone   /   2008-07-19 23:09:44
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar