2013-06-20 67 views
1

我有一个包含多层次管理器层次结构以及在时间维度上完成的工作单元的多维数据集。让我们假设这是我的工作数据:在分离成员时汇总多层次层次结构中的值

http://i.stack.imgur.com/eNP4L.png

我想要做的通过MDX是专注于一个特定的水平,(1级,约翰·史密斯),并删除个人(两端用户和管理人员)并正确汇总值。

http://i.stack.imgur.com/xW5CF.png

你可以从上面的图片看,我们已经删除丽莎赖斯和摩根·理查森的整个团队。预期的结果将是两列,全名和工作单位。

,我已经把到目前为止看起来像这样的查询:

WITH SET [MyCustomSet] AS EXCEPT(
    DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
    {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
) 
MEMBER [Measures].[MyMeasure] AS Aggregate([MyCustomSet], [Measures].[#Work Units]) 
SELECT { 
    [Measures].[MyMeasure] 
} ON COLUMNS, 
NON EMPTY { 
    [MyCustomSet] 
} ON ROWS 
FROM [MyCube] 

但这返回我需要的成员,但对于每一个成员的聚合值的列表是总的所有成员。当我删除计算的度量并仅使用[Measures].[#Work Units]时,值表示未删除成员的总汇总值,但成员不在列中。

此数据的最终归属将位于具有递归父关系的SSRS表设置中,以正确显示层次结构。

任何人都可以伸出援助之手或指向正确的方向吗?谢谢!

+0

结束了工作就自己出去 – bash721

回答

1

我想你想改变你的Aggregate()成为每个成员下面的聚合,而不是整个[MyCustomSet]。喜欢的东西:

MEMBER [Measures].[MyMeasure] AS 
    Aggregate([HR].[Mgr Hierarchy].CurrentMember, [Measures].[#Work Units]) 

编辑:如果您正在寻找聚集在每个父母级别改变,也许你应该考虑使用子查询。

SELECT 
    [Measures].[#Work Units] ON COLUMNS, 
    NON EMPTY [HR].[Mgr Hierarchy].Members ON ROWS 
FROM (
    SELECT EXCEPT(
     DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
     {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
     ON COLUMNS 
    FROM [MyCube] 
) 
+0

更改此聚集的工作项目总数的一组仍然包括我要排除的成员。这就是为什么自定义设置必须包含在这个计算中。 – bash721

+0

啊,对不起,我误解了你的问题。所以你想要一个自定义设置,并且你希望每个级别的总数与你保存或从自定义设置中删除的成员保持一致?你有没有试过一个子选择? – findango

+0

啊,我完全忘记了子查询(对MDX来说还是比较新的)。所以我修改了查询并确认了子查询返回了正确的成员,但是在整个查询中,排除的成员仍然包含在内。有什么想法吗?谢谢你的帮助! – bash721

1

我会去sub-query;通过这种方式,您只能选择想要保留的[HR]成员,并使用VISUAL(默认行为)与非可视模式,您将获得实际选定成员或所有成员的合计值尺寸:

WITH SET [MyCustomSet] AS EXCEPT(
    DESCENDANTS([HR].[Mgr Hierarchy].&[JSMITH],, SELF_AND_AFTER), 
    {DESCENDANTS([HR].[Mgr Hierarchy].&[MRICHARDSON],,SELF_AND_AFTER), DESCENDANTS([HR].[Mgr Hierarchy].&[LRICE],,SELF_AND_AFTER)} 
) 

SELECT 
    [Measures].[#Work Units] ON 0, NON EMPTY [MyCustomSet] ON 1 
FROM (select [MyCustomSet] on 0 from [MyCube]) 
+0

感谢您的建议,它看起来像一个子查询可能是路径(正如findango也建议),但除了语句似乎并没有筛选出我需要排除的成员。另外,在尝试查询版本后,看起来不能使用子查询中外部查询中指定的集合。再次感谢您的输入。 – bash721