维度的所有属性的 MDX 范围

MDX Scope for all attributes of a dimension

我有一个具有 10 个属性 1..10 的维度 X。为了在范围内对度量 Y 进行自定义计算,我可以编写以下语句:

SCOPE([X].[1].CHILDREN, [Measures].[Y]);
 THIS = 1+1;
END SCOPE;

这将确保当同时选择维度属性 1 和 Y 时,结果将为 2。

是否有任何简单的编写方法来确保它适用于维度 X 中的所有属性,而不是使用嵌套范围并为所有属性显式定义它?

类似 SCOPE([X].[*]) 或类似的东西?

像这样再创建一个计算成员:

CREATE MEMBER DimSelected AS
IIF(
[X].[1].CURRENTMEMBER IS [X].[1].[All]
AND 
[X].[2].CURRENTMEMBER IS [X].[2].[All]
AND 
[X].[3].CURRENTMEMBER IS [X].[3].[All]
AND 
[X].[4].CURRENTMEMBER IS [X].[4].[All]
AND 
[X].[5].CURRENTMEMBER IS [X].[5].[All]
AND 
[X].[6].CURRENTMEMBER IS [X].[6].[All]
AND 
[X].[7].CURRENTMEMBER IS [X].[7].[All]
AND 
[X].[8].CURRENTMEMBER IS [X].[8].[All]
AND 
[X].[9].CURRENTMEMBER IS [X].[9].[All]
AND 
[X].[10].CURRENTMEMBER IS [X].[10].[All],
NULL,
1)

并将您的作用域逻辑修改为以下内容:

SCOPE([Measures].[Y]);
 IF Measures.DimSelected = 1 THEN This = 1+1 END IF;
END SCOPE;

或者,如果您只是打算 select 某个给定轴上的暗淡,下面可能会起作用:

CREATE MEMBER MembersSelected AS
GENERATE(AXIS(1) AS a, a.current.item(0).unique_name)

CREATE member HasX as
IIF(instr(1,MembersSelected,"[X].") <> 0, "Yes", NULL)

然后修改你的作用域逻辑如下:

SCOPE([Measures].[Y]);
 IF Measures.HasX = "Yes" THEN This = 1+1 END IF;
END SCOPE;