【问题标题】:MDX: How To Aggregate Hierarchy Level Members With Same NameMDX:如何聚合具有相同名称的层次结构级别成员
【发布时间】:2010-03-16 22:21:39
【问题描述】:

您好,

我是 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 术语中,我想对 [Segment Week] 级别内的成员名称进行 GROUP BY。我不确定如何做到这一点。谢谢。

戴夫

【问题讨论】:

    标签: mdx


    【解决方案1】:

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

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

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

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

    然后您只需按 SEGMENT 和 Week 进行过滤。 例如,要获得 Flow A 的所有 Week1,您需要执行以下操作:

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

    【讨论】:

    • 我同意您关于立方体设计有缺陷的评估。不幸的是,对立方体的设计更改是不可行的。
    【解决方案2】:

    你能用会员的钥匙吗?

    [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 声明呢:

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多