因此引入了下面的介绍,使用MDX来对CUBE进行计算,得出我们真正想要的同比数据。
首先我们要根据当月的值来计算去年当月的值
WITH MEMBER Measures.[去年本月销售额] AS ([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember) ,FORMAT_STRING='#,##0.00;-#,##0.00' SELECT {[Measures].[NMSRVALUE], Measures.[去年本月销售额]} ON 0, [日期].[年月].[月份].Members ON 1 FROM [MYCUBE]
在这里NMSRVALUE是当月的值,去年当月的值因为前12行是第一年的,所以没有再上一年的值可查,结果如下
本月同比销售差额
WITH MEMBER Measures.[本月同比销售差额] AS IIF(ISEMPTY(([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember)), "", [Measures].[NMSRVALUE]- ([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember) ),FORMAT_STRING='#,##0.00;-#,##0.00' SELECT {[Measures].[NMSRVALUE], Measures.[本月同比销售差额]} ON 0, [日期].[年月].[月份].Members ON 1 FROM [MYCUBE]
销售额本月同比
WITH MEMBER Measures.[销售额本月同比] AS IIF(ISEMPTY(([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember)), "", ([Measures].[NMSRVALUE]- ([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember))/ ([Measures].[NMSRVALUE],[日期].[年度].CurrentMember.PrevMember) ),FORMAT_STRING='0.00%' SELECT {[Measures].[NMSRVALUE], Measures.[销售额本月同比]} ON 0, [日期].[年月].[月份].Members ON 1 FROM [MYCUBE]
我们有了这些值之后,在各个报表设计工具中设置同比KPI的原始值和目标值就很容易了。