MDX SSAS 2008去年计算 - 闰年问题

时间:2013-03-08 10:38:08

标签: sql-server ssas mdx

我有计算来计算上一年的价值,通过以下方式实现:

([Measures].[SalesAmount LY], Leaves([Time])) = 
(
     PARALLELPERIOD
     (
          [Time].[Year - Month - Day].[Year],
          1,
          [Time].[Year - Month - Day].currentmember
     ), 
     [MEASURES].[SalesAmount]
 )

我这样做,因为仅使用PARALLELPERIOD会导致在仅选择几个月时的总计算错误。它工作得很好。

但是,现在我面临着闰年的问题:

Month         SalesAmount  SalesAmount LY
------------- ------------ ---------------
January 2012  1000
February 2012 1100         --Leap year - 29.February
January 2013  1200         1000
February 2013 1300         1050

缺失值(本例中为1100 - 1050 = 50)与2012年2月29日的值完全相同。

有谁知道如何解决这个问题?如何使闰年正常工作,同时仍保持正确的总计行为?任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

这可以帮忙吗?

PARALLELPERIOD
(
  [Time].[Year - Month - Day].[Year],
  1,
  ISLEAF([Time].[Year - Month - Day].currentmember),
  Ancestor([[Time].[Year - Month - Day].currentmember, [Time].[Year - Month - Day].[Month]),
  [Time].[Year - Month - Day].currentmember)
), 
[MEASURES].[SalesAmount]

如果当前成员是一天,它将引用他的月份父母,所以月份有28天或29天无关紧要。