2015-02-09 78 views
1

我有一個mdx查詢,如下面的產品類別名稱和產品名稱維度的篩選條件。我需要產品類別和產品名稱中的匹配記錄。MDX查詢具有「或」條件的多個維度的篩選函數

SELECT 
    {[Measures].[Inventory On Order Quantity]} ON COLUMNS 
, 
    Filter 
    (
     [Product].[Product Category Name].[Product Category Name].MEMBERS 
    , 
     [Product].[Product Category Name].Member_value = 'Audio' 
     OR 
     [Product].[Product Category Name].Member_value = 'Cameras and camcorders' 
    ) 
    * 
    Filter 
    (
     [Product].[Product Name].[Product Name].MEMBERS 
    , 
      [Product].[Product Name].Member_value 
      = 'A. Datum Advanced Digital Camera M300 Azure' 
     OR 
      [Product].[Product Name].Member_value 
      = 'A. Datum Advanced Digital Camera M300 Black' 
     OR 
      [Product].[Product Name].Member_value 
     = 'A. Datum Advanced Digital Camera M300 Grey' 
    ) ON ROWS 
FROM [Operation]; 

它appies 「AND」, 「產品類別名稱」 和 「產品名稱」,由於有 「*」 之間的狀態。

任何人都可以幫助我使它「或」的條件,我看到下面的鏈接,但無法使其工作。

MDX - Filter multiple dimensions

+0

OK - 想我明白 - 你想,例如,數據,其中貓的名字是'照相機與攝像機',然後PROD名稱可以_anything_。或產品名稱是「A. Datum高級數碼相機M300 Azure''和貓的名字是_anything_?因爲它們是相同的維度,所以'*'正在執行自動存在行爲 - 這是預期的。將會有一種方法 - 我現在正在玩一個遊戲。 – whytheq 2015-02-09 17:30:44

回答

0

我不知道你的成員的確切名稱,所以你將需要玩這些,但我懷疑,你可以使用針對tuples一個setExists函數具有相同的維數交叉-joined層次:

SELECT 
    {[Measures].[Inventory On Order Quantity]} ON COLUMNS 
,Exists 
    (
    { 
     [Product].[Product Category Name].[Product Category Name].MEMBERS 
     * 
     [Product].[Product Name].[Product Name].MEMBERS 
    } 
    ,{ 
     (
     [Product].[Product Category Name].[Product Category Name].[Audio] 
     ,[Product].[Product Name].[Product Name].[(All)] 
    ) 
    ,(
     [Product].[Product Category Name].[Product Category Name].[Cameras and camcorders] 
     ,[Product].[Product Name].[Product Name].[(All)] 
    ) 
    ,(
     [Product].[Product Category Name].[Product Category Name].[(All)] 
     ,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Azure] 
    ) 
    ,(
     [Product].[Product Category Name].[Product Category Name].[(All)] 
     ,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Black] 
    ) 
    ,(
     [Product].[Product Category Name].[Product Category Name].[(All)] 
     ,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Grey] 
    ) 
    } 
) ON 1 
FROM [Operation]; 

下面是一個AdvWks腳本,得到所有客戶各自的性別和婚姻狀況:

SELECT 
    {} ON 0 
, 
    [Customer].[Customer].[Customer]* 
    [Customer].[Gender].[Gender]* 
    [Customer].[Marital Status].[Marital Status] ON 1 
FROM [Adventure Works]; 

然後讓男性或已婚的保持我們這樣做:

SELECT 
    {} ON 0 
,Exists 
    (
     [Customer].[Customer].[Customer]* 
     [Customer].[Gender].[Gender]* 
     [Customer].[Marital Status].[Marital Status] 
    ,{ 
     (
     [Customer].[Customer].[(All)] 
     ,[Customer].[Gender].&[M] 
     ,[Customer].[Marital Status].[(All)] 
    ) 
    ,(
     [Customer].[Customer].[(All)] 
     ,[Customer].[Gender].[(All)] 
     ,[Customer].[Marital Status].&[M] 
    ) 
    } 
) ON 1 
FROM [Adventure Works];