2015-09-28 130 views
1

我在我的SSAS多維數據集中使用了上個月的上個月度量。我發現它在互聯網上的某個地方。它已被設置爲以下內容:當月份有不同天數時,MDX上個月的日期上一個月沒有顯示價值

iif (
    [Date].[Calendar].currentmember.properties("level_number",Typed)<=2 
    ,null 
    , 
    iif (
     isempty (ParallelPeriod([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember)) 
     ,Aggregate(
     { 
      StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename) 
      :StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename) 
     },[Measures].[Total actuals Prorata] 
     ) 
      ,SUM(
      MTD(
       ParallelPeriod([Date].[Calendar].[Month] 
           ,1 
           ,[Date].[Calendar].currentmember 
           ) 
       ),[Measures].[Sales] 
      ) 
     ) 

它在按月級別按預期工作。即使當我在日常水平鑽取它的工作!但我的問題是,例如,7月31日,我的上個月迄今爲止有#VALUE,因爲6月31日沒有。對於所有其他月份而言,這與當前的日子較少有關。上述函數似乎在「iif語句」中擺脫了這個問題,但它不會!我的日曆層次按年,季,月,日組織。請幫忙嗎?

回答

-1

謝謝你們!我終於使我的功能工作。事實上,問題出在了Aggregate聲明上。實際上,這個函數在一個測試立方體上完美工作,但我不明白爲什麼它不在另一個測試立方體上。所以,我做什麼,我只是改變了

Aggregate(
    { 
     StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename) 
     :StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename) 
    },[Measures].[Sales] 
    ) 

通過

SUM(
    { 
     StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename) 
     :StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename) 
    },[Measures].[Sales] 
    ) 

和它的工作!但我也會嘗試你的功能來檢查結果。謝謝!

+1

您對'StrToMember ... uniquename'的使用是完全無關緊要的。聚合返回到多維數據集中使用的聚合類型。 – whytheq

0

是否改變部分

Aggregate(
     { 
      StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename) 
      :StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename) 
     },[Measures].[Total Actuals Prorata] 

到下面的工作?

Aggregate(
    { 
     Ancestor 
       (
       [Date].[Calendar].currentmember, 
       [Date].[Calendar].[Month]).Lag(1).FirstChild 
      ) 
     : 
     Ancestor 
      (
       [Date].[Calendar].currentmember, 
       [Date].[Calendar].[Month]).Lag(1).LastChild 
      ) 
    },[Measures].[Sales] 
0

也許儘量簡化總結部分的元組:

IIF(
    [Date].[Calendar].currentmember.properties("level_number",Typed)<=2 
    , NULL 
    ,IIF(
     ISEMPTY(
      PARALLELPERIOD(
       [Date].[Calendar].[Month] 
       ,1 
       ,[Date].[Calendar].currentmember 
      ) 
      ) 
     , (
      Ancestor(
       [Date].[Calendar].currentmember 
       ,[Date].[Calendar].[Month]).PREVMEMBER 
      ,[Measures].[Total Actuals Prorata] 
     ) 
     ,SUM(
      MTD(
       PARALLELPERIOD(
       [Date].[Calendar].[Month] 
       ,1 
       ,[Date].[Calendar].currentmember 
       ) 
      ) 
      ,[Measures].[Sales] 
      ) 
     ) 
相關問題