过滤多成员的SSAS Calc测量

时间:2016-11-18 11:23:53

标签: ssas mdx calculated-columns

我正在尝试在计算度量中创建一个公式,但没有一个正常工作

Dimension Cell有多个成员,包括Control和Core。我还有一个名为[Measures]。[Rate]的度量,它被预先计算为百分比

我需要达到以下公式

(([Measures].[Rate] in [Cell].[ABC].&[Control] and [Cell].[ABC].&[Core])
 - ([Measures].[Rate] not in [Cell].[ABC].&[Control] and [Cell].[ABC].&[Core]))
 / ([Measures].[Rate] in [Cell].[ABC].&[Control] and [Cell].[ABC].&[Core])

类似于(A + B)/ A但我无法计算个人A和B.

请注意[测量]。[费率]是百分比格式,因此无法总结

修改

同样任何想法是否必须使用来自不同维度的两个切片对于单个测量来完成相同的操作 例如

([测量]。[速率]在[单元格]。[ABC]。& [控制]和[单元格]。[ABC]。&[核心]也在[数据]。[PQR]。& ; [是])

    SUM (
     { [Cell].[ABC].&[Control] , [Cell].[ABC].&[Core] }
     ,{[Data].[PQR].&[Yes])}
     ,[Measures].[A]
        )

以上是否可行或其语法是什么

2 个答案:

答案 0 :(得分:1)

嗯,也许是这样的:

CREATE MEASURE [Measures].[SpecialRate]
AS
AGGREGATE({[Cell].[ABC].&[Control],[Cell].[ABC].&[Core]}, [Measures].[Rate])
 - AGGREGATE(EXCEPT([Cell].[ABC].MEMBERS,{[Cell].[ABC].&[Control],[Cell].[ABC].&[Core]}), [Measures].[Rate])
 / AGGREGATE({[Cell].[ABC].&[Control],[Cell].[ABC].&[Core]}, [Measures].[Rate])
,VISIBLE = 1;

答案 1 :(得分:1)

最简单的方法是重新设计Cell维度,以包含一个新的汇总列,该列将Control和Core都包含在一个汇总中。

如果这不可行并且您必须在MDX中执行此操作,那么一种方法是在维度上创建计算度量,然后使用它:

CREATE MEMBER CurrentCube.[Cell].[ABC].[All].[Control and Core] as 
AGGREGATE({[Cell].[ABC].&[Control], [Cell].[ABC].&[Core]})
,VISIBLE=0;

CREATE MEMBER CurrentCube.[Cell].[ABC].[All].[Not Control and Core] as 
AGGREGATE(-{[Cell].[ABC].&[Control], [Cell].[ABC].&[Core]})
,VISIBLE=0;

CREATE MEMBER CurrentCube.[Measures].[My Calc] as
(([Measures].[Rate], Cell].[ABC].[All].[Control and Core])
 - ([Measures].[Rate], Cell].[ABC].[All].[Not Control and Core]))
 / ([Measures].[Rate], Cell].[ABC].[All].[Control and Core]);