多维度的MDX查询过滤器功能" OR"条件

时间:2015-02-09 12:00:46

标签: for-loop filter mdx dimensions

我有一个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];

由于“*”之间的“产品类别名称”和“产品名称”之间存在“AND”条件。

任何人都可以帮助我将其设为“OR”条件,我看到了以下链接但无法使其正常工作。

MDX - Filter multiple dimensions

1 个答案:

答案 0 :(得分:0)

我不知道您的会员的确切姓名,因此您需要使用这些,但我怀疑您可以使用Exists功能对set tuples与交叉连接层次结构相同的维度:

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];