MDX每年上个月回归

时间:2015-06-29 19:17:34

标签: ssas mdx

我正在尝试创建一个集合,以返回包含每年数据的上个月的值 例如,如果我将年份放在行上 2011,2012,2013,2014都将包含12月的数据。 2015年将包含2015年6月的数据。

除了最近一个月的回归,我似乎无法得到任何东西。我认为这是因为我的尾巴声明,但我不确定如何解决它。

CREATE SET [Last Statement Month] AS
  Tail(
   nonempty(
      Descendants(
           [Date].[Calendar].currentmember
          ,[Date].[Calendar].[Month]
      ),
      [Measures].[Sale Amount]
   ), 1);

我也尝试过每个月的最后一天,但是当我使用这一行时,行上没有显示任何内容。

GENERATE(
   { 
     Openingperiod([Date].[Calendar].[Month]):ClosingPeriod([Date].[Calendar].Month)
   },
   {[Date].[Calendar].CurrentMember.Lastchild}
);

1 个答案:

答案 0 :(得分:1)

我目前远离AdvWrks,因此无法进行测试。以下是否有帮助?

CREATE SET [Last Statement Month] AS
  TAIL(
    NONEMPTY(
      EXISTING ([Date].[Calendar].[Month].MEMBERS)
      ,[Measures].[Sale Amount]
    )
  );

(如果此方法有效)如果最后执行EXISTING,性能显然会更好:

CREATE SET [Last Statement Month] AS
  TAIL(
    EXISTING
    NONEMPTY(
       [Date].[Calendar].[Month].MEMBERS
      ,[Measures].[Sale Amount]
    )
  );  

看起来上述情况不会起作用。我在下面添加了一个替代方案,可能更符合您的需求:

WITH 
  DYNAMIC SET  [Last Statement Month] AS 
    Tail
    (
      NonEmpty
      (
        (EXISTING 
          [Date].[Calendar].[Month].MEMBERS)
       ,[Measures].[Internet Sales Amount]
      )
    ) 
  MEMBER [Measures].[x] AS 
    [Last Statement Month].Item(0).Item(0).Member_Caption 
  MEMBER [Measures].[Lst mth with data] AS  `<<<<maybe something like this helps?
    Max
    (
      (EXISTING 
        [Date].[Calendar].[Month].MEMBERS)
     ,IIF
      (
        [Measures].[Internet Sales Amount] = 0
       ,NULL
       /*,[Date].[Calendar].CurrentMember.Member_Caption*/ //<<WRONG PROPERTY USED
       ,[Date].[Calendar].CurrentMember.MemberValue        //<<should help!!
      )
    ) 
SELECT 
  {[Measures].[Lst mth with data],[Measures].[x]} ON 0
 ,[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works];

结果如下:

enter image description here

编辑后返回:

enter image description here