MDX范围分配返回相同的值

时间:2014-10-29 15:43:25

标签: scope mdx

我的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。

显然我做错了什么?

2 个答案:

答案 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;