在时间维度中包括两个层次:
[Ship Date].[h_TimeYSQMD];
[Ship Date].[h_TimeYWM]。
本文主要用到的是前者。
这个层次结构为:CalendarYear->CalendarSemester->CalendarQuarter->MonthNumberOfYear-> DayNumberOfMonth。
简单地说,环比就是逐期的数据比较;同比就是同期的数据比较。例如:将今年的下半年数据与上半年数据相比较;将今年的五月的数据与四月的数据相比较;将今年第三季度的数据与今年的第二季度相比较,这些都是环比。将今年的数据与去年的数据比较;将今年五月的数据与去年五月的数据比较;将今年第一季度的数据与去年第一季度的数据比较,这些都是同比。
同比计算成员MDX代码:
CREATE MEMBER[AWCube].[ParallelPeriodCompare]AS [Measures].[SalesAmount]-( [Measures].[SalesAmount],ParallelPeriod( [ShipDate].[h_TimeYSQMD].[CalendarYear], 1, [ShipDate].[h_TimeYSQMD].CurrentMember ) ), FORMAT_STRING=’###,###,###,##0.00’
在这个计算成员中最为主要的就是那个ParallelPeriod函数,这个函数的功能是返回上一期间中与指定成员具有相同的相对位置的成员。这里将ParallelPeriod函数的结果与度量值组成一个元组,就可以对ParallelPeriod函数计算所得到的结果在指定的度量上进行汇总。这个计算的结果就是返回当期与上一期数据的差额。
同比计算成员测试代码:
SELECT { [ShipDate].[h_TimeYSQMD].[CalendarYear].&[2003].&[2], [ShipDate].[h_TimeYSQMD].[CalendarYear].&[2003].&[2].Children }ONCOLUMNS, { [Measures].[SalesAmount], [ParallelPeriodCompare] }ONROWS FROM[AWCube]
环比计算成员代码:
CREATE MEMBER [AW Cube].[Cycle Period Compare] AS [Measures].[Sales Amount]-( [Ship Date].[h_TimeYSQMD].CurrentMember.PrevMember, [Measures].[Sales Amount] ), FORMAT_STRING=’###,###,###,##0.00’
环比计算成员的定义看起来要比同比计算成员简单一点,环比计算成员中最主要的部分就是[Ship Date].[h_TimeYSQMD].CurrentMember.PrevMember这一句。这一句就表达了环比的定义。通过计算当期与前一期成员与度量值组成的汇总数据得到环比结果,即当期与前一期数据的差额。
环比计算成员测试代码
SELECT { [Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2], [Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2].Children } ON COLUMNS, { [Measures].[Sales Amount], [Cycle Period Compare] } ON ROWS FROM [AW Cube]
------解决方案--------------------------------------------------------
呵呵,楼主应该排个版。。这样看起来比较乱。