2

所以假设我有这个 MDX 查询:

select 
    NON EMPTY {([Dim 1].[Member 1].[Member 1])} on columns
    ,NON EMPTY {([Dim 2].[Member 2].[Member 1])} on rows
from [Cube 1]
where
{(
    [Dim 3].[Hierarchy 3].[Member 3].&[Value 3]
    ,[Measures].[Measure 1]
)}

但是现在我还需要过滤,就像我对[Dim 3].[Hierarchy 3].[Member 3].&[Value 3]所做的那样,但是具有来自不同维度的层次结构的多个成员值,我们称之为:

[Dim 4].[Hierarchy 4].[Member 4].&[Value 2]
[Dim 4].[Hierarchy 4].[Member 4].&[Value 4]
[Dim 4].[Hierarchy 4].[Member 4].&[Value 8]

我试过这个:

select 
    NON EMPTY {([Dim 1].[Member 1].[Member 1])} on columns
    ,NON EMPTY {([Dim 2].[Member 2].[Member 1])} on rows
from [Cube 1]
where
{(
    [Dim 3].[Hierarchy 3].[Member 3].&[Value 3]
    ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 2]
    ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 4]
    ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 8]
    ,[Measures].[Measure 1]
)}

明白啦:

The 'Hierarchy 4' hierarchy appears more than once in the tuple.

也试过这个(我知道,在这里没什么意义):

select 
    NON EMPTY {([Dim 1].[Member 1].[Member 1])} on columns
    ,NON EMPTY {([Dim 2].[Member 2].[Member 1])} on rows
from [Cube 1]
where
{(
    [Dim 3].[Hierarchy 3].[Member 3].&[Value 3]
    ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 2]
    :[Dim 4].[Hierarchy 4].[Member 4].&[Value 4]
    :[Dim 4].[Hierarchy 4].[Member 4].&[Value 8]
    ,[Measures].[Measure 1]
)}

得到了这个:

The : function expects a member expression for the 2 argument. A tuple set expression was used.

我对 MDX 相当陌生(在 T-SQL 方面更有经验),甚至不知道谷歌到底是什么,所以我很愚蠢。

欢迎任何帮助。

提前致谢。

4

2 回答 2

4

明白了:http: //msdn.microsoft.com/en-us/library/ms146047.aspx

如果要使用同一层次结构中的多个成员,则需要在 WHERE 子句中包含一个集合

另一件事,在我的示例中 Dim 2 = Dim 3,所以要获得我期望的结果,我需要这个:

select 
    NON EMPTY {([Dim 1].[Member 1].[Member 1])} on columns
    ,NON EMPTY 
       {(
          [Dim 2].[Hierarchy 3].[Member 3].&[Value 3] 
          ,[Dim 2].[Member 2].[Member 1]
       )} on rows
from [Cube 1]
where
(
    {
       [Dim 4].[Hierarchy 4].[Member 4].&[Value 2]
       ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 4]
       ,[Dim 4].[Hierarchy 4].[Member 4].&[Value 8]
    }
    ,([Measures].[Measure 1])
)
于 2013-06-14T23:36:43.173 回答
2

您的元组格式错误;您可以尝试交叉连接(您需要一组):

where
 { [Dim 4].[Hierarchy 4].[Member 4].&[Value 2], [Dim 4].[Hierarchy 4].[Member 4].&[Value 4], [Dim 4].[Hierarchy 4].[Member 4].&[Value 8] }  
 * {( [Dim 3].[Hierarchy 3].[Member 3].&[Value 3], [Measures].[Measure 1] )}

或者您可以改用子查询(我最喜欢的选择)。

于 2013-06-14T22:19:30.300 回答