我的SSAS多维数据集中有一些MDX,如:
CREATE MEMBER CURRENTCUBE.[Measures].[xx] AS 1;
SCOPE ([Measures].[xx]);
SCOPE ([Measures].[xx], [DimA].[DimA Hierarchy].Members);
This= 20;
END SCOPE;
SCOPE ([Measures].[xx], [DimB].[DimB Hierarchy].Members);
This= 2;
END SCOPE;
END SCOPE;
浏览多维数据集并选择[xx]度量总是返回2,无论我是否使用DimA,DimB或根本没有维度。
如果我交换内部范围declrations的顺序(即DimB的范围之前的DimB范围),无论如何我都会得到20。
显然我做错了什么?
答案 0 :(得分:0)
SCOPE
只有在层次结构成员的子集上使用它才有意义。
[DimB].[DimB Hierarchy].Members
和[DimA].[DimA Hierarchy].Members
对范围没有影响,因为它们引用了层次结构中的所有成员。因此,其中一个始终是当前成员,并且始终使用最后一个范围。除非您在该层次结构上定义计算成员,并且它是当前成员。
您可能希望至少排除All
成员,以便SCOPE
仅用于此成员的其他成员,如果您不使用层次结构,则默认为当前成员一点都不如果DimA Hierarchy
是属性层次结构而不是用户层次结构,则可以使用[DimA].[DimA Hierarchy].[DimA Hierarchy].Members
获取DimA Hierarchy
级别的成员,这些成员除了All
成员之外的所有成员
答案 1 :(得分:0)
尝试这样的事情:
CREATE MEMBER CURRENTCUBE.[Measures].[xx] AS 1;
SCOPE ([Measures].[xx]);
SCOPE ([DimA].[DimA Hierarchy].Members);
This= 20;
END SCOPE;
SCOPE ([DimB].[DimB Hierarchy].Members);
This= 2;
END SCOPE;
END SCOPE;