1

我有一个具有多个层次结构的日期维度(大多数情况下)。我有许多作为运行总计计算的度量,如下例所示。

AGGREGATE([Date].[Calendar].[Date].Members.Item(0):ClosingPeriod([Date].[Calendar].[Date], [Date].[Calendar].CurrentMember), [Measures].[Number Of Contracts])

我的问题是运行总计仅适用于日历层次结构(按年、月和日分解所有内容)。如果我改为使用 Weeks hiearchy (按单个周分解),则计算不起作用,它只会显示每周相同的数字。

MDX 中是否有一种高效的方法可以使运行的总工作量适用于多个层次结构?到目前为止,我尝试的一切都非常缓慢。

4

1 回答 1

2

下面是一种可能的解决方案。通过使用 EXISTING 关键字,可以获得当前上下文中存在的所有 Date 成员的列表,然后使用这些日期来定义聚合数据的范围。根据我的初步测试,性能类似于问题中的计算。

AGGREGATE(NULL:TAIL(EXISTING [Date].[Date].[Date].Members).Item(0), [Measures].[Number Of Contracts])

在http://www.purplefrogsystems.com/blog/2010/08/mdx-calculated-member-spanning-multiple-date-dimensions/中描述了另一种可能更高效的解决方案。它通过计算所有适用层次结构的范围,然后将这些层次结构交叉连接在一起来解决问题。

AGGREGATE({ NULL:[Date].[Calendar].CurrentMember } * { NULL:[Date].[Week].CurrentMember })

此解决方案的唯一缺点是,如果您有许多彼此之间没有属性关系的层次结构,它可能会变得冗长。

于 2012-09-19T13:30:07.470 回答