0

我有一个销售日历,其中一个月的日历每年都在变化。例如,2015 年 9 月被定义为 9 月 1 日 - 9 月 30 日,但去年是从 9 月 3 日 - 9 月 30 日。
所以当我想比较今年 2015 年 9 月 1 日的 MTD 时,应该将其与 2014年 9 月 3 日进行比较. 我有时间维度中的所有日期,如 LAST MTD Start 和 LAST MTD End,并将它们放在一个层次结构中,DATE 与 LAST MTD START 和 LAST MTD END,并尝试了祖先函数,如

WITH 
 MEMBER [Measures].LMTD AS 
    SUM(
       ANCESTOR(
         [Time].[LYMD_START].CURRENTMEMBER
        ,1
       )
      ,[Measures].[Volume]
    )
SELECT 
  [Measures].LMTD on 0
FROM  [myCUBE]
WHERE [Time].[DATE].&[2015-09-01T00:00:00];

但我只取回当月的总成交量。

4

1 回答 1

2

假设您有一个包含日期、销售月份和销售年份的维度,以下应该可以工作。如果您过滤到 2015-09-01(这是第 9 个销售月的第一天),这将退回一个销售年,然后找到第 9 个销售月的第一天(2014-09-03):

ParallelPeriod(
    [Date].[Sales Calendar].[Sales Year], 
    1, 
    [Date].[Sales Calendar].CurrentMember
   )

然后你想总结那个销售月到 2014-09-03 的天数:

Sum(
  PeriodsToDate(
    [Date].[Sales Calendar].[Sales Month],
    ParallelPeriod(
        [Date].[Sales Calendar].[Sales Year], 
        1, 
        [Date].[Sales Calendar].CurrentMember
       )
    ),
  [Measures].[Volume]
 )

因此,艰苦的工作是建立具有正确销售月份的维度。MDX 只能导航该层次结构。

于 2015-09-05T11:40:41.810 回答