2014-10-07 41 views
0

我正在嘗試編寫一個MDX表達式,該表達式將返回上一年(即從今天到365天之前)的總開發票。我目前有:如何篩選過去一年的MDX中的數據

SELECT 
    NON EMPTY 
     { [Measures].[Invoiced] } 
    ON COLUMNS 
FROM 
    ( 
    SELECT 
     ( 
      [Date Invoiced].[Day].&[2013-10-01T00:00:00] 
      : [Date Invoiced].[Day].&[2014-10-01T00:00:00] 
     ) ON COLUMNS 
     FROM [Sales] 
    ) 

我想的東西,如Now(),並且2013-10-01T00:00:00的東西,如(Now()-365))更換2014-10-01T00:00:00,但一直未能找到正確的語法。

MDX要在PowerPivotExcel 2010不支持暴露VBA參數一起使用,所以我不能以編程方式替代日期。

+0

您可以在Excel中創建自定義設置?我沒有使用PP,所以不確定自定義集是否有幫助 - 一旦創建了自定義集,可以將它添加到主鍵的背景? – whytheq 2014-10-07 19:54:53

+0

是PP從表格模型中獲取數據嗎? – whytheq 2014-10-07 19:55:44

+0

@whytheq - PowerPivot通過MDX查詢從SQL Server分析服務器多維數據集獲取其開票數據,而不是從表格模型獲取。我不確定「Excel中的自定義設置」是什麼意思。 – 2014-10-08 09:24:12

回答

1

您可以使用mdx上的滯後函數,此函數返回維度內提供的成員之前的成員n位置的值。

下面是該函數的引用: http://mdxpert.com/Functions/MDXFunction.aspx?f=37

這裏是我使用的滯後從一個維度得到以前的值,在這種情況下,我得到了前一年的價值。

MEMBER [Measures].[Previous] as ([Data].CurrentMember.lag(12), [Measures].[Example]) 
+0

滯後函數當然可以成爲解決這個問題的一部分,但主要問題仍然存在 - 如何在今天和今天(今天 - 12個月)之間的滑動時間間隔中選擇所有成員。這個例子展示瞭如何比較一個值與之前12個時間段相同的值,這不是我想要做的。你能否改進這個例子來展示如何替換原始問題中的硬編碼日期? – 2014-12-02 07:05:15