如何在 MDX 查询交叉连接中包含具有特定子项的成员?

How to include members with specific children in MDX query cross join?

我是 MDX 的新手,我有以下情况。我必须跨特定部门(产品维度)、特定商店(位置维度)和特定时间范围计算收入。

我的立方体关卡如下。
Product <- Department <- Item
Location <- Region <- Store
Time <- Year <- Month <-Day

假设我有以下成员

[Product].[Dairy].[Oak Farm]
[Product].[Dairy].[GV]

[Location].[US West].[LA]
[Location].[US West].[CA]

[Time].[2015].[01].[01] : [Time].[2015].[02].[01]


然后我应该得到结果,因为产品中的位置应该只包含 GV,位置应该只包含 CA

2015-01-01        US West       Dairy       0
2015-02-01        US West       Dairy       0

如有任何帮助,我们将不胜感激。

可能有几种方法,具体取决于具体要求。

 SELECT 
   [Measures].[SomeCubeMeasure] ON 0,      
   {[Time].[2015].[01].[01] : [Time].[2015].[02].[01]}*
    Exists
    (
      [Location].[Region].MEMBERS
     ,[Location].[US West].[CA]
    )*
    Exists
    (
      [Product].[Department].MEMBERS
     ,[Product].[Dairy].[GV]
    ) ON 1
FROM [yourCube];

编辑

要创建仅查看特定商店的度量,您可以使用如下内容:

 WITH MEMBER [Measures].[Store1and2Measure] AS
    Aggregate
    (
      {
        [Store][Region1][Store1]
       ,[Store][Region1][Store2]
      }
     ,[Measures].[SomeCubeMeasure]
    )       
 SELECT 
   [Measures].[Store1and2Measure] ON 0,      
   [Location].[US West].[LA] ON 1
FROM [yourCube];

一种非常简单的方法。 @Whytheq 给出了更好的解决方案。

SELECT      
      (
       [Product].[Dairy].[GV]* 
       {[Time].[2015].[01].[01] : [Time].[2015].[02].[01]}*
       [Location].[US West].[CA]
      ) ON 1,
[Measures].Revenue ON 0
FROM [YourCube]