MDX:如何聚合具有相同名称的层次结构级别成员

MDX:如何聚合具有相同名称的层次结构级别成员,mdx,Mdx,您好 我是MDX新手,很难理解如何在层次结构级别上对具有相同名称的成员执行聚合。此查询特定于Microsoft Analysis Services 2000多维数据集 我有一个给定的层次维度,其级别定义如下: [Segment].[Flow].[Segment Week] 在[Segment Week]级别内,我有以下成员: [Week- 1] [Week- 2] [Week- 3] ... [Week- 1] [Week- 2] [Week- 3] 成员名称相同,但与父级中的不同[F

您好

我是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]
对齐。我试图做的是聚合
[分段周]
级别中具有相同名称的所有成员。在SQL术语中,我想在
[Segment Week]
级别内按成员名称分组。我不知道怎么做。多谢各位


戴夫

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

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

您可以从SEGMENT中删除WEEK级别并创建另一个维度(如果我没记错的话,AS 2000中不能有多个层次结构),例如WEEK,其结构如下:

[Week].[Week- 1]
[Week].[Week- 2]
[Week].[Week- 3]
etc
然后你只需按段和周进行筛选。 例如,要获取流A的所有1周,您需要执行以下操作:

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

你能用一下会员的钥匙吗

[Week].&[1] ([Week].[Week - 1] (flow1)) 
[Week].&[5] ([Week].[Week - 1] (flow2))
作为参考,在2008年的“Adventure Works DW Standard Ed”多维数据集中,客户Aaron A.Allen的关键是[Customer].[Customer].&[20075]

更新: 抱歉,请重读您的问题,看起来您并没有试图让特定的一周成为一个流程,您想激怒他们。像这样的案例陈述怎么样:

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

不是很通用或灵活,但这可能是一个开始…

我同意你的评估,立方体设计有缺陷。不幸的是,对多维数据集的设计更改是不可行的。