MDX Multi Select除以CurrentMember.Properties

时间:2017-10-09 20:07:30

标签: sql-server ssas mdx

错误:" MDX函数CURRENTMEMBER失败,因为' YYYYMM'属性包含一个集合。"

我的计算只在返回一个月的数据时有效。我的日历维度包含每年的单个记录(密钥:YYYYMM),并包含" Man Hours"的属性。

据我了解,这是由于多选择支持的实施或缺乏。

这是T-SQL,它可以回归预期值。

SELECT CostPerManHour = SUM(MonthCost) / SUM(ManHours)
FROM ( 
    SELECT 
        MonthCost = SUM(C.Cost), 
        Cal.ManHours 
    FROM dbo.Costs C
    JOIN dbo.Calendar Cal ON C.YYYYMM = Cal.YYYYMM
    WHERE Cal.YYYYMM BETWEEN 201503 AND 201705
      AND C.OtherThing = 'Thing1'
    GROUP BY Cal.YYYYMM, Cal.ManHours 
    ) Q
;

MDX:

SELECT [Measures].[Cost Per Man Hour],... ON 0
FROM Metrics
WHERE { 
    { [Calendar].[YYYYMM].&[201503] : [Calendar].[YYYYMM].&[201705] }
  * { [Other Thing].[Other Thing].&[Thing1] }
};

计算

CREATE MEMBER CURRENTCUBE.[Measures].[Cost Per Man Hour] 
 AS DIVIDE([Measures].[Cost], [CALENDAR].[YYYYMM].CURRENTMEMBER.PROPERTIES ("Man Hours")), 
VISIBLE = 1,  ASSOCIATED_MEASURE_GROUP = 'Costs'; 

1 个答案:

答案 0 :(得分:1)

试一试:

CREATE MEMBER CURRENTCUBE.[Measures].[Cost Per Man Hour] 
 AS 
 DIVIDE(
    [Measures].[Cost],
    SUM(
        existing [Calendar].[YYYYMM].[YYYYMM].Members,
        [CALENDAR].[YYYYMM].CURRENTMEMBER.PROPERTIES ("Man Hours")
    )
 ), 
VISIBLE = 1,  ASSOCIATED_MEASURE_GROUP = 'Costs';