使用多个层次结构运行总计

时间:2012-09-18 20:46:50

标签: ssas mdx

我的日期维度有多个层次结构(大部分都是这样)。我有一些计算为运行总计的度量,如下例所示。

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

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

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

1 个答案:

答案 0 :(得分: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 })

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