2017-05-04 61 views
0

我正在嘗試執行一個查詢來計算一段時間內指定時間範圍內的度量總和。當前數據成員在mdx查詢中減去幾個月

WITH MEMBER 
    [Measures].[calc] as 
     SUM (
      { [date.time].[day].CurrentMember.LEAD(-30):[date.time].[day].CurrentMember }, 
      [Measures].[my_value] 
     ) 
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS, 
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube] 

此代碼的工作,還給我的和當前成員加上之前的最後30名成員,但我正在尋找一種方式,而不是減去成員(在這種情況下天),月因爲不是所有的月份都有30天,有一些方法可以做到這一點?因爲如果沒有,我需要每隔一段時間做一次請求,以便在java代碼中執行我想要的操作。

+0

你想獲得當前月價值而不是30天? –

+0

我想獲取當前成員的當前月份並減去幾個月而不是幾天,在那一部分中我做了一筆款子 –

回答

0

如果你有一個具有日 - 月關係(例如日曆)的層次結構,你可以使用這一天的父:

WITH MEMBER 
    [Measures].[calc] as 
     SUM (
      { [date.time].[calendar].CurrentMember.LEAD(-30):[date.time].[calendar].CurrentMember }, 
      ([date.time].[calendar].CurrentMember.Parent.Lag(1),[Measures].[my_value]) 
     ) 
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS, 
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube] 

如果你沒有層次結構,您可以使用一天鍵將其重新進入本月重點:

WITH MEMBER 
    [Measures].[calc] as 
     SUM (
      { [date.time].[day].CurrentMember.LEAD(-30):[date.time].[day].CurrentMember }, 
      (StrToMember('[date.time].[month].[' + left([date.time].[day].CurrentMember.Properties('Key'),7) + ']').Lag(1),[Measures].[my_value]) 
     ) 
SELECT NON EMPTY {[Measures].[calc]} ON COLUMNS, 
{[date.time].[day].[2014-07-21 00:00:00.0]:[date.time].[day].[2016-07-21 00:00:00.0]} ON ROWS 
FROM [my_cube] 
+0

謝謝!有效 –

相關問題