所以可以说我有这个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经验更深),甚至不知道Google到底要使用什么,所以我很笨。
任何帮助都将受到欢迎。
提前致谢。
最佳答案
知道了: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])
)
关于sql-server-2008-r2 - 按层次结构的多个成员过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17116138/