【问题标题】:How to aggregate on a crossed join set with MDX如何使用 MDX 在交叉连接集上进行聚合
【发布时间】:2013-09-04 12:56:15
【问题描述】:

我有一个要 AGGREGATE 的元组集。

例如: 我有这个问题:

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0,
{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 
From [Adventure Works]

当我想为其中一个轴添加 TOTAL 时,我会这样做:

WITH MEMBER [Sales Territory].[Sales Territory].[Total X] as 'AGGREGATE(AXIS(0))' 
Select {[Sales Territory].[Sales Territory].[Total X],[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 From [Adventure Works]

现在,一切都很好。 但是当我试图聚合一个交叉连接集时它失败了。 请以这个查询为例:

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children}*{[Sales Channel].[Sales Channel].DEFAULTMEMBER.children} on 1 
From [Adventure Works]

请注意,我在 [Sales Reason].[Sales Reason Type] 和 [Sales Channel].[Sales Channel] 之间进行了交叉连接

当有多个成员时,有没有办法在轴上进行总计?

谢谢!

P.S:我是 MDX 查询的新手

【问题讨论】:

  • 您的维度的默认成员是否设置为 ALL?如果是这样,您可以在 1 上尝试以下操作而不是您当前的交叉连接吗? "{ [Sales Reason].[Sales Reason Type].members * [Sales Channel].[Sales Channel].members} on 1" 当您像这样执行 .members 时,它将包括所有成员。

标签: aggregate mdx cross-join


【解决方案1】:

您正在做的事情比必要的复杂。您的第二个查询应简化为:

Select [Sales Territory].[Sales Territory].Members on 0,
       [Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children on 1
  From [Adventure Works]

请注意,All 成员已经是(几乎)MDX 中所有层次结构的成员。因此,要在第三个查询中包含 All 成员,您可以编写

Select {[Sales Territory].[Sales Territory].Members}
       on 0,
       {[Sales Reason].[Sales Reason Type].Members}
       *
       {[Sales Channel].[Sales Channel].Members}
       on 1 
  From [Adventure Works]

或者,如果您真的只想获得轴的总计,而不需要将其中一个层次结构的总计与另一个层次结构的其他成员组合,则合并两个集合 - 一个包含包含所有成员的元组,以及一个与其他两个层次结构的交叉连接。我在这里使用Union 的简写形式——这是集合的+ 运算符:

Select {[Sales Territory].[Sales Territory].Members}
       on 0,
       { ([Sales Reason].[Sales Reason Type].All, [Sales Channel].[Sales Channel].All) }
       +
       (
          {[Sales Reason].[Sales Reason Type].[Sales Reason Type].Members}
          *
          {[Sales Channel].[Sales Channel].[Sales Reason Type].Members}
       )
       on 1 
  From [Adventure Works]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2012-05-22
    • 2013-09-14
    相关资源
    最近更新 更多