2009-12-07 32 views
6

來自我的多維數據集的相關結構是我有一個具有「類」和「子類」的層次結構。我也有一個名爲「價值」的措施,這就是我試圖獲得的。包含來自同一層次結構的2維的MDX查詢

一個簡單的查詢可能看起來像:

SELECT 
NON EMPTY ([Measures].[Value]) ON COLUMNS, 
NON EMPTY ([Some Dimension].[Class Hierarchy].[Class]) ON ROWS 
FROM [MyCube] 

,我還可以用它返回到ADOMD層次明顯讀取子類。

我的問題是雙重的,首先,我該如何「扁平」這個層次結構,以便在CellSet中接收Class和SubClass作爲離散成員?這不起作用:

SELECT 
NON EMPTY ([Measures].[Value]) ON COLUMNS, 
NON EMPTY (
    [Some Dimension].[Class Hierarchy].[Class], 
    [Some Dimension].[Class Hierarchy].[Sub Class] 
) ON ROWS 
FROM [MyCube] 

的類層次結構層次的交叉連接功能使用一次以上

第二個問題我actuually需要做的是過濾的特殊班以上,再次這不會出於與上述相同的原因。

SELECT 
NON EMPTY ([Measures].[Value]) ON COLUMNS, 
NON EMPTY (
    {[Some Dimension].[Class Hierarchy].[Class].&[ClassA],[Some Dimension].[Class Hierarchy].[Class].&[ClassB]}, 
    [Some Dimension].[Class Hierarchy].[Sub Class] 
) ON ROWS 
FROM [MyCube] 

任何幫助非常感謝。 MDX讓我瘋狂!

回答

4

您缺少維度上的MEMBERS屬性。在WHERE子句

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS, 
    NON EMPTY {(
      [Some Dimension].[Class Hierarchy].[Class].&[ClassA], 
      [Some Dimension].[Class Hierarchy].[Class].&[ClassB], 
      [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS 
FROM [MyCube] 
+1

感謝您的回答,但我害怕它錯了。這會產生相同的錯誤「在CrossJoin函數中多次使用類分層結構層次」 – Jamiec 2009-12-07 16:50:24

+0

抱歉。它適用於我的立方體。仔細檢查你是否在正確的地方使用了大括號和括號。我有點困惑,你談論了一個交叉連接函數,但它不在你的樣本MDX中。通常它由*之間的維數表示。 – jvilalta 2009-12-07 17:13:31

+0

你確定你的立方體在同一個層次上有兩個維度嗎?我也可以看到使用逗號分隔的連接詞沒有區別。 我已經在我的查詢中檢查了curlies&括號的順序,結果相同。 我試着用相同的結果替換逗號*。 – Jamiec 2009-12-07 17:19:00

2

使用子查詢:

爲了您的第一個例子試試這個:

SELECT 
    NON EMPTY ([Measures].[Value]) ON COLUMNS, 
    NON EMPTY {(
      [Some Dimension].[Class Hierarchy].[Class].MEMBERS, 
      [Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS 
FROM [MyCube] 

你的第二個例子試試這個。 MDX將始終限制僅在一個軸上使用一個維度。

子查詢是一種解決方法。我最近在MDX讓我瘋了以後也學會了這個把戲。

0

嗨,這個查詢對我有用。

SELECT NON EMPTY { [Measures].[App Count] } 
ON COLUMNS, 
NON EMPTY 
{(
EXISTING 
(
[MART TIME DIM].[Date].[Date] .MEMBERS) * 
[New Ren DIM].[New Ren CODE].[New Ren CODE].ALLMEMBERS 
)} 
ON ROWS FROM [SubmissionCube] 
where 
({ 
[MART BROKER DIM].[BROKER ID].&[10812]},{[MART TIME DIM].[Year].&[2015], 
{[MARTTIME DIM].[Year].&[2016]} 
}) 

請仔細查看where語句中的'}'。

+0

我正在使用[MART TIME DIM]。[Year]。&[2015] – 2016-12-07 18:57:49

+0

我正在使用[MART TIME DIM]。[Year]。&[2015]和\t [MART TIME DIM]。[Year] [2016年],它是我兩年的結果 – 2016-12-07 18:58:52

+1

哇,7歲到一天。 – Jamiec 2016-12-07 19:08:49