1

我有一个多维数据集,其中包含多级管理器层次结构以及在时间维度上已完成的工作单元。让我们假设这是我正在使用的数据:

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

我试图通过 MDX 做的是专注于特定级别(级别 1,John Smith)并从层次结构中删除个人(最终用户和经理)并正确汇总值。

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

从上图中可以看出,我们已经移除了 Lisa Rice 和 Morgan Richardson 的整个团队。预期结果将是两列,全名和工作单位。

到目前为止,我汇总的查询如下所示:

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 表设置中,以正确显示层次结构。

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

4

2 回答 2

1

我会使用子查询;这样,您将能够仅选择您想要保留的 [HR] 成员,并使用 VISUAL(默认行为)与 NON 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] )
于 2013-06-20T22:48:30.157 回答
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]
)
于 2013-06-20T15:29:30.057 回答