2010-03-16 50 views
1

问候,MDX:如何聚合层级成员具有相同名称的

我新的MDX,和我无法理解如何与具有相同的名称成员等级层次进行聚合。此查询是特定于Microsoft Analysis Services 2000多维数据集。

我已经被定义为水平给定的层次结构维度如下:

[Segment].[Flow].[Segment Week] 

[Segment Week]水平,我有以下成员:

[Week- 1] 
[Week- 2] 
[Week- 3] 
    ... 
[Week- 1] 
[Week- 2] 
[Week- 3] 

成员具有相同的名称,但在父级别与不同的[Flow]对齐。因此,第一次出现[Week- 1]成员与[Flow].[A]对齐,而第二次出现[Week- 1][Flow].[B]对齐。我想要做的是汇总[Segment Week]级别中具有相同名称的所有成员。用SQL术语来说,我想GROUP BY [Segment Week]级别的成员名称。我不确定如何做到这一点。谢谢。

戴夫

回答

0

我认为你的立方体设计是有缺陷的。

设计维度的最佳方式是其所有成员都是唯一的,并且聚合路径遵循维度的自然层次结构。

您可以删除从段一周的水平,并创建另一个维度(如果我没记错,你不能有一个以上的层次结构,AS 2000),说周,具有以下结构:

[Week].[Week- 1] 
[Week].[Week- 2] 
[Week].[Week- 3] 
etc 

然后你只需要按SEGMENT和Week来筛选。 例如,为了获得流动A的总Week1你会怎么做:

SELECT {[Measures].members} on 0 
FROM MYCUBE 
WHERE ([Week].[Week- 1],[Segment].[A]) 
+0

我您的看法是,立方体的设计是有缺陷的同意。不幸的是,对立方体的设计更改是不可行的。 – 2010-03-17 22:05:19

0

你能使用成员的钥匙吗?

[Week].&[1] ([Week].[Week - 1] (flow1)) 
[Week].&[5] ([Week].[Week - 1] (flow2)) 

作为参考,在2008年的Adventure Works DW Standard Ed'Cube中,Customer Aaron A. Allen的关键是[Customer]。[Customer]。 & [20075]

UPDATE: 不好意思,刚才重读你的问题,它看起来像你不是想具体星期去流,要aggreagate他们。怎么样一个case语句是这样的:

CASE 
    WHEN [Week].CURRENTMEMBER.NAME='Week - 1' 
    THEN [Week].CURRENTMEMBER 
    ELSE 0 
END 

不是很通用的或柔性的,但也可能是一个开始......

相关问题