维度的所有属性的 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;
我有一个具有 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;