Ssas 使用命名集在何处进行筛选

Ssas 使用命名集在何处进行筛选,ssas,mdx,Ssas,Mdx,是否可以使用聚合命名集来过滤MDX中的查询?我不希望结果集中的集合项移动到WHERE,但是这似乎会导致所有度量值返回(null) 首先,我使用员工层次结构中的两个成员构建一个集合: WITH SET [Combined] as { [Staff].[Group].[Practice Group].&[04], [Staff].[Group].[Practice Group].&[06] } 然后我将该集合聚合为一个新成员: MEMBER [Staff]

是否可以使用聚合命名集来过滤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])
这给了我(空)值,如果我使用[Combined],我会收到一个周期性的参考错误,但是使用下面的方法效果很好:

WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]})

我是不是忽略了什么?还是使用了错误的方法?也许这只是我正在查询的多维数据集的一个怪癖?

我想说,这种行为与处理器在查询中执行子句的顺序有关:

其中
发生在带

您提到,以下方法很好——在where子句中指定显式成员非常标准和快速:

可以将其添加到子选择中,就像在0轴上一样:

SELECT
 ...
 ...
FROM
  (
    SELECT
       {[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0
    FROM [YourCube]
  );

谢谢,这可能是它,它肯定会符合我看到的行为。在方法上,有更好的选择吗?您能否在子选择中创建一个集合,从而有效地限制主查询的多维数据集空间?子选择是另一种过滤方法。次级选择也带来了一些不寻常的行为。您不能做的是在with子句中创建一个成员,然后在子select中使用它。。。虽然我想这是一种直觉。
SELECT
 ...
 ...
FROM
  (
    SELECT
       {[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0
    FROM [YourCube]
  );