使用命名集在 WHERE 中过滤
Filter in WHERE using Named Set
是否可以使用聚合命名集来过滤 MDX 中的查询?我不希望结果集中的设置项因此将其移动到 WHERE,但这似乎导致所有措施 return (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])
这给了我(空)值,如果我使用 [Combined] 我收到了一个循环引用错误,但是使用下面的工作正常:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
我是不是忽略了什么?还是使用了错误的方法?也许这只是我正在查询的多维数据集的一个怪癖?
我会说该行为与处理器在您的查询中执行子句的顺序有关:
Logical order an MDX query is processed
WHERE
发生在 WITH
之前
您提到以下工作正常 - 在 where 子句中指定显式成员是非常标准的和快速:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
您可以将其添加到子select,就像它在 0 轴上一样:
SELECT
...
...
FROM
(
SELECT
{[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0
FROM [YourCube]
);
是否可以使用聚合命名集来过滤 MDX 中的查询?我不希望结果集中的设置项因此将其移动到 WHERE,但这似乎导致所有措施 return (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])
这给了我(空)值,如果我使用 [Combined] 我收到了一个循环引用错误,但是使用下面的工作正常:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
我是不是忽略了什么?还是使用了错误的方法?也许这只是我正在查询的多维数据集的一个怪癖?
我会说该行为与处理器在您的查询中执行子句的顺序有关:
Logical order an MDX query is processed
WHERE
发生在 WITH
您提到以下工作正常 - 在 where 子句中指定显式成员是非常标准的和快速:
WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})
您可以将其添加到子select,就像它在 0 轴上一样:
SELECT
...
...
FROM
(
SELECT
{[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0
FROM [YourCube]
);