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] 是在所有的上面都通用的。