2013-07-04 45 views
2

下返回的最後一個成員在我們組個月:末整月

TAIL([Date].[Date - Calendar Month].[Calendar Month],1) 

我們的多維數據集包含高達的數據和包括昨天 - 所以,如果上面是今天運行它返回的成員[July 2013]

我想最後完成月所以如果今天運行(7月4日),它應該返回[June 2013]

不知道這是否增加了一些額外的複雜性,但如果表達式第一月的運行,那麼在層次結構中的最後一個成員實際上是等於最後一個完整月份。

所以有時最後完成的月份是最後的成員,有時它是下一個,但最後一個成員,層次結構中[Calendar Month]

有編碼這種表達的很簡單的方法?

回答

3

您可以輕鬆地確定「現在」是一個月的第一天爲:

IIF(Day(Now()) = 1, ... , ...) 

所以,你可以創建一個計算的成員:

with member [Last Completed Month] as 
    IIF(Day(Now()) = 1, 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],1)(0), 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],2)(0) 
    ) 

說不上有關[日曆月]但是可能使用lastChild和lastChild.prevMember會更高效...

Tail(...)(n)檢索由Tail返回的集合的第n個元素 - t他是一個項目的快捷方式(n)

想象月份的層次結構在所有成員下是平的:[Calendar Month]。[All] .lastChild將和Tail()和lastChild.prevMember在最後之前得到一個。

+0

+1感謝 - 深思 - 我現在需要玩這個代碼。 – whytheq

+0

....在TAIL函數之後,額外限定符「(0)」是什麼? – whytheq

+0

......可以請您給的實現的一個例子這種「也許使用lastChild和lastChild.prevMember會更有效。」 – whytheq