2012-10-26 99 views
0

我是MDX的新手,但希望儘可能保持我的代碼清潔。在MDX函數中使用計算成員作爲參數

我有一個查詢今天的銷售情況,並使用ParallelPeriod函數將它們與LY和LY-1進行比較。它看起來像這樣..

With Member [Date].[SalesCalendar].[DateToday] as [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00] 

SELECT 

    {[Date].[SalesCalendar].[DateToday], 

    ParallelPeriod([Date].[SalesCalendar].[Year],1,[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]), 

    ParallelPeriod([Date].[SalesCalendar].[Year],2,[Date].[SalesCalendar].[DateToday]} 

    * 

    {[Measures].[Total Sales],[Measures].[Units],[Measures].[Sales Target]} 
    ON Columns, 

    [Locations].[Location PK].[Location PK] 
    on Rows 

From MyCube 

我從定義一個指向今天日期的成員開始。我想定義它一次,並在整個查詢過程中使用它(以及我編寫的其他查詢),理論上我可以在一次地方改變它並且底層查詢作出反應。

我遇到的問題是,如果我嘗試在ParallelPeriod函數中使用此計算成員,我不會得到任何結果。通過上面的查詢,我得到了第一列和第一次調用ParallelPeriod(用於LY)的結果,但第二次使用聲明成員的LY-1調用失敗。

我猜這是由於我對MDX缺乏知識,所以我想我缺少一些基本的東西。然而,我的頭靠在牆上不能工作,所以我需要一些幫助!

任何想法我做錯了什麼?

感謝

回答

0

,因爲當你的查詢評估[Date].[SalesCalendar].[DateToday]不與[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]更換這可不行。

您創建了一個會在數據透視表單元格中給出與[Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]相同的數值的成員。

你可以試試這個查詢:

With Member [Date].[SalesCalendar].[DateToday] as [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00] 
    Member [Measures].[name] as [Date].[SalesCalendar].CurrentMember.Name 

SELECT 
    {[Measures].[name], [Measures].[Total Sales]} ON Columns, 
    {[Date].[SalesCalendar].[DateToday], [Date].[SalesCalendar].[Date].&[2012-10-26T00:00:00]} on Rows 
From MyCube 

Total Sales將是相同的,但不[Measures].[name]

+0

啊對,好的。那麼對此最佳做法是什麼?謝謝 :-) – CResults