2014-10-20 69 views
1

這是一個模擬了我的腳本:尺寸取決於辦法成員

(0)

SELECT 
    { 
    [Measures].[Revenue], 
    [Measures].[NumSignups] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location active].[Shop Name].MEMBERS 
     //[Location signup].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

辦法成員[Revenue]是關係到Dimension[Location active]而辦法成員[NumSignups]Dimension[Location signup]有關。每個度量與替代位置維度無關。

所以兩個以下,在邏輯上是錯誤的,並且在每一個細胞返回相同的數目(這是如預期):

(1)

SELECT 
    { 
    [Measures].[Revenue] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location signup].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

(2)

SELECT 
    { 
    [Measures].[NumSignups] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Calendar Year].[Calendar Year].MEMBERS* 
     [Date].[Calendar Month].[Calendar Month].MEMBERS* 
     { 
      [Location active].[Shop Name].MEMBERS 
     } 
    } ON ROWS 
FROM [OurCube] 

是否可以將一些條件邏輯添加到腳本(0)中,以便我可以使用一個腳本顯示兩種度量?

回答

2

這在MDX中是不可能的。所有座標軸的結構都必須修改爲MDX語句。這就像在SQL中那樣,你也不能有不同的結果行有不同的列。一條SQL select語句必須在所有記錄中都有一個修復列列表。 E.例如,您不能在第1行和第2行具有列A,B,C,但在第3行和第4行中具有列C,D,E的SQL語句。您將不得不e。 G。因爲SQL結果集被定義爲矩形結構,所以對於所有四行,列A,B,C,D,E存在(可能是空的,但是仍然存在)。在某些編程語言中,不存在像「粗糙數組」那樣的問題,其中每行可能有不同的一組列。

同樣,在MDX中,您不能在幾行上存在層次結構,而在另一行上不存在層次結構。

相反,我會寫兩個MDX語句,並根據用戶選擇將它們切換到客戶端軟件中。

+1

+1謝謝弗蘭克。儘管'SQL'確實有可能 - 我可以執行兩個'CTE'語句,後面跟一個'SELECT'語句'FULL OUTRE JOINS'CTE的結果。或者只是一個帶有「UNION」聲明的CTE。 – whytheq 2014-10-20 17:17:58

+0

@whytheq我澄清了我的答案。 – FrankPl 2014-10-20 17:24:51