是否可以使用聚合命名集来过滤MDX中的查询?我不希望结果集中的设置项将其移动到WHERE,但这似乎导致所有度量返回(null)。
首先,我使用员工层级中的几个成员构建一个集合:
WITH
SET [Combined] as {
[Staff].[Group].[Practice Group].&[04],
[Staff].[Group].[Practice Group].&[06]
}
然后我将该集合聚合成一个新成员:
MEMBER [Staff].[Group].[Group Combo] AS Aggregate([Combined])
通常我会在我的查询中将其用作报告区域,可能使用层次结构(取决于查询),一切都很好。但是这次我需要根据这些成员组合过滤数据,例如:
WHERE ([Staff].[Group].[Group Combo])
这给了我(null)值,如果我使用[Combined],我收到了一个周期性参考错误,但使用下面的工作正常:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
我在这里俯瞰什么吗?或者使用错误的方法?也许这只是我要查询的多维数据集的一个怪癖?
答案 0 :(得分:2)
我会说这种行为与处理器在查询中执行子句的顺序有关:
Logical order an MDX query is processed
WHERE
发生在WITH
你提到以下工作正常 - 在where子句中指定显式成员它是非常标准的和快速:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
您可以将其添加到子选择中,就像它在0轴上一样:
SELECT
...
...
FROM
(
SELECT
{[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0
FROM [YourCube]
);