这两个MDX查询应该返回相同的结果吗?

时间:2013-04-02 19:51:09

标签: sql-server-2008-r2 ssas mdx

我有两个MDX查询(其基础来自Excel的CUBEVALUE()函数)。我希望这两个查询的输出相同,但它们不是。

考虑这个帐户结构:

some accounts ...
  Account A
      Account B
      Account C
      Account D
      Account E
other accounts ...

我的帐户维度是使用帐户智能定义的 - 它也是父/子维度。

查询1:

SELECT [Measures].[Actual] ON 0 
FROM [MYSYSTEM] 
WHERE (
    {[Account].[Accounts].&[Account B], [Account].[Accounts].&[Account C]}, 
    [Time].[Year - Month].&[2011-12-01T00:00:00]
)

返回帐户A 的汇总[Measures]。[Actual]值(是,父项),而不是指定时间间隔内帐户B和C的值。

查询2:

SELECT [Measures].[Actual] ON 0 
FROM [MYSYSTEM] 
WHERE 
    { 
    ([Account].[Accounts].&[Account B], [Time].[Year - Month].&[2011-12-01T00:00:00]),
    ([Account].[Accounts].&[Account C], [Time].[Year - Month].&[2011-12-01T00:00:00])
    }

返回我期望的内容 - 指定时间间隔内帐户B和C的[Measures]。[Actual]值。

我的问题是 - 在概念上我是否有一些关于MDX作为语言的东西?我认为这些查询通常应返回相同的值,这是错误的吗?这是否表明我如何制定帐户维度?

1 个答案:

答案 0 :(得分:1)

我认为它与你的维度有关,我用我的立方体复制查询并且两次得到相同的结果:

select [Measures].[Amount] on 0,
[Account].[Account Type].[Account Type] on 1
from [Cube]
where (
{[Account].[Accounts].&[4],[Account].[Accounts].&[5]}
,[Date].[Calendar].[Month].&[2002]&[11]
)

select [Measures].[Amount] on 0,
[Account].[Account Type].[Account Type] on 1
from [Cube]
 where {
([Account].[Accounts].&[4],[Date].[Calendar].[Month].&[2002]&[11]),
([Account].[Accounts].&[5],[Date].[Calendar].[Month].&[2002]&[11])
}

它是否与使用帐户智能有关? http://msdn.microsoft.com/en-us/library/ms174759(v=sql.100).aspx 我自己没用过..