MDX范围用于维度的所有属性

时间:2016-03-01 08:23:45

标签: ssas mdx

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

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

这将确保当与Y一起选择维度属性1时,结果将为2.

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

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

1 个答案:

答案 0 :(得分:1)

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

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;

或者,如果您只是计划在某个给定轴上选择暗淡,则下面可能有效:

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;