mdx中的members,Allmembers,元组,集

客户端使用.members时候,在返回集中都不会包括任何计算成员。

但是analysis提供了AddCaculatedMembers()和Allmembers函数将计算成员加入到一个集中

 

元组

一个元组是来自一个或者多个纬度的成员的集合,他本质上是个多维成员。

当一个元组有多个纬度时,对于每一个纬度,他只能有一个成员来自其中,为了能组成一个多维的元祖,必须使用括号将成员括起来

例如:   ([Customer].[Chicago,IL],[Time].[Jan,2005])

 

元组的“纬度范围” 指的是组成该元祖的成员的纬度的集合。对于元祖的纬度范围而言,纬度在元祖中出现的顺序很重要,所有的纬度都可以成为元祖的一部分,包括度量纬度。

集是元祖的有序集合。

一个集可能不止有一个元组,也可能只有一个元组,或者是空的。,mdx集可能多次包含同样的元组,而排序在MDX集中非常重要。

集中的每个元组都有同样的纬度范围(即元祖的纬度及其在元组中的顺序),下面的语句发生错误:

{    ([Time].[2005] ,[Measures].[Dollar Sales]),

     ([Measures].[Unit Sales],[Time].[Feb,2005])

}  这个语句就会发生错误,因为纬度的顺序改变了。

{     ([Time].[2005] ,[Measures].[Dollar Sales]),

      ([Time].[Feb,2005],[Measures].[Unit Sales])

} 这个就是正确的。

 

注意:

([Time].[2001 Week 1],[Product].[HyperGizmos])

{([Time].[2001 Week 1],[Product].[HyperGizmos])}

一个是元组 一个是集合

analysis services 2005在集合只有单个元组的时候不加{}是可以的,但是在其他的(非微软)上是不管用的 必须加上 {}

 

比如:

select ([Time].[2001 Week 1],[Product].[HyperGizmos]) on columns from [Sales]        在2005上管用的

select {([Time].[2001 Week 1],[Product].[HyperGizmos])} on columns from [Sales]    是在所有的上面都通用的。

posted @ 2012-02-07 10:27  honkcal  阅读(1335)  评论(0编辑  收藏  举报