2015-10-24 26 views
0

我試圖用WHERE Group A OR Group B語法對一個多維數據集運行基本查詢。我試過下面的代碼基於網上的文章,其中WHERE命令需要一個列表,但它沒有認識到列表:MDX命令中OR操作的問題

SELECT FROM [Ticket] 
WHERE ([Analyst].[Group Name].&[IS Epic Service Desk],[Analyst].[Group Name].&[IS Service Desk]) 

在當前狀態下它給我試圖用一個錯誤在相同的Crossjoin中不止一次地具有相同的層次結構。我嘗試添加{}來隔離該語句,但收到超出範圍的錯誤。

最終目標是一個查詢,該查詢返回IS Epic Service Desk和IS Service Desk在同一列表中的匹配項。

回答

0

WHERE子句中的()指示要分析服務,您要指定tuple - 這是立方體空間內的單個點。因此,無法使用同一層次結構中的兩個成員來定義您在多維數據集中作爲單個點獲得的錯誤消息。

因此,我們知道,這是確定的:

SELECT 
... 
FROM [Ticket] 
WHERE ([Analyst].[Group Name].&[IS Epic Service Desk]); 

由於是這樣的:

SELECT 
... 
FROM [Ticket] 
WHERE ([Analyst].[Group Name].&[IS Service Desk]); 

您使用{}這是正確的提及。我有點不確定,你把這些花括號,但下面應該實現OR邏輯:

SELECT 
... 
FROM [Ticket] 
WHERE (
    { 
    [Analyst].[Group Name].&[IS Service Desk] 
    ,[Analyst].[Group Name].&[IS Epic Service Desk] 
    } 
); 

一般在布爾邏輯OR手段或者是X,還是Y,或者是X和Y我是很少有人不確定這個定義OR是否與你的問題的最後一句一致?

最終目標是一個查詢,該查詢返回IS Epic Service Desk 和IS Service Desk在相同列表中的匹配項。

以上幾乎聽起來更像是AND邏輯,因此您只需要Epic Service Desk和Service Desk中的數據。如果是這種情況,那麼級聯NonEmpty表達式就足夠了:

SELECT 
... 
FROM [Ticket] 
WHERE (
    { 
    NonEmpty(
     NonEmpty(
     [Customer].[Customer].[Customer].MEMBERS 
     ,[Analyst].[Group Name].&[IS Service Desk] 
    ) 
    ,[Analyst].[Group Name].&[IS Epic Service Desk] 
    ) 
);