此MDX查询返回所有结果,忽略WHERE

此MDX查询返回所有结果,忽略WHERE,mdx,Mdx,首先,我应该说我对MDX基本一无所知。直到昨天,我才知道它的存在,有人把这个查询递给我使用,声称它正在工作,我运行它,它返回了所有应该由人过滤的结果。所以我想解释一下a。它目前实际在做什么,以及b。如何修复它以实现我的目标: SELECT NON EMPTY { [Measures].[Time Spent] } ON COLUMNS, NON EMPTY { [Consultant].[Account Full Name].[Account Full Name].ALLMEM

首先,我应该说我对MDX基本一无所知。直到昨天,我才知道它的存在,有人把这个查询递给我使用,声称它正在工作,我运行它,它返回了所有应该由人过滤的结果。所以我想解释一下a。它目前实际在做什么,以及b。如何修复它以实现我的目标:

SELECT NON EMPTY
{
    [Measures].[Time Spent]
} ON COLUMNS, 
NON EMPTY
{
    [Consultant].[Account Full Name].[Account Full Name].ALLMEMBERS * 
    [Consultant].[Activity Full Name].[Activity Full Name].ALLMEMBERS * 
    [Consultant].[Description].[Description].ALLMEMBERS * 
    [Consultant].[Engineer Full Name].[Engineer Full Name].ALLMEMBERS
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM  
( 
    SELECT ( [Date].[Date].&[2013-01-01T00:00:00] : [Date].[Date].&[2014-01-01T00:00:00] )
    ON COLUMNS FROM [Data]
    WHERE ([Consultant].[Engineer Full Name].&[Adam])
    ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS;";
在实际代码中,日期范围和人名是调用此查询的函数的参数,我添加了一些新行以使其更可读,但除此之外,这是给定代码运行的查询

据我所知,它首先通过选择日期范围来创建数据,然后在字段中按名称“切片”,然后生成一个表,其中一个轴是所花费的时间,另一个轴是其他数据。这很好,除了被完全忽略的地方。我只得到日期范围内的结果,但没有以任何方式通过工程师全名进行过滤

我在谷歌上搜索了一整天,虽然我找到了一些关于MDX的名义上的介绍,但我还没有找到一个不是真的认为你基本上已经了解MDX的介绍,这不是完全有用的。所以我真的很想有人帮我找出这有什么问题


谢谢

这里的查询是一个subselect,因此WHERE子句不是一个切片,与在非subselect查询中使用的方式不同。您对切片和表格的解释是正确的——subselect的行为让您大吃一惊

请理解,子选择将创建一个新的“子多维数据集”,该“子多维数据集”仅限于子选择中的成员及其所有祖先(即,它将格式良好的层次结构保留回根)。如果顶层选择不是很严格,人们有时会惊讶地发现最终结果中的祖先。(我知道这不是你的案子,仅供参考。)

WHERE子句对子多维数据集没有影响。我认为您应该能够将其移动到行以实现您想要的

... FROM (
  SELECT 
    ( [Date].[Date].&[2013-01-01T00:00:00] : [Date].[Date].&[2014-01-01T00:00:00] ) ON COLUMNS 
    ([Consultant].[Engineer Full Name].&[Adam]) ON ROWS
  FROM [Data]
)
这是subselect的文档。请参见末尾的备注部分,其中:


希望这能有所帮助。

所以,这绝对是一个我以前没有名字的概念,而且是一条重要的信息,WHERE听起来确实像是被故意忽略了……),所以我按照指定的方式重新编辑了该查询,并得到了一个语法错误,这让我有点害怕(在MDX仍然是一个彻头彻尾的傻瓜;我想念sql语法…)。很容易找到,但是:行和列规范之间缺少了一个逗号。我没有想到这样写,因为我认为它只会选择该行,而且我还需要其他行。显然,它不是这样工作的。无论如何,非常感谢!您完全保存了我的理智和此项目组件。:)