我应该先说我对 MDX 基本上一无所知。直到昨天我才知道它的存在,当有人把这个查询交给我使用,声称它正在工作,我运行它,它返回了每个应该由一个人过滤的结果。所以我很想解释一下。它目前实际在做什么,以及 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;";
在实际代码中,日期范围和人名是调用此查询的函数的参数,我添加了一些换行符以使其更具可读性,但除此之外,这是给我的代码运行的查询。
据我所知,它首先通过选择日期范围来创建数据,然后按字段中的名称“切片”,然后生成一个表格,其中一个轴是花费的时间,另一个轴是其他一些数据。这很好,除了 WHERE 被完全忽略。我仅在日期范围内获得结果,但未按工程师全名以任何方式过滤。
我整天都在谷歌上搜索,但是虽然我发现了一些名义上的 MDX 介绍,但我还没有找到一个并不真正假设您基本上已经了解 MDX 的介绍,这并不是完全有帮助的。所以我真的很想有人帮我弄清楚这有什么问题。
谢谢!