Ssas 使用多个层次结构运行Total

Ssas 使用多个层次结构运行Total,ssas,mdx,Ssas,Mdx,我有一个具有多个层次结构的日期维度(和大多数人一样)。我有许多度量值是作为运行总数计算的,如下面的示例所示 AGGREGATE([Date].[Calendar].[Date].[Date].[Calendar].[Date].[Calendar].[Date].[Calendar].[CurrentMember],[Measures].[Number Of contract]) 我的问题是,运行总数只适用于日历层次结构(它按年、月、日分解所有内容)。如果我改为使用Weeks(周)层次结构(按周

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

AGGREGATE([Date].[Calendar].[Date].[Date].[Calendar].[Date].[Calendar].[Date].[Calendar].[CurrentMember],[Measures].[Number Of contract])

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


在MDX中是否有一种性能方法可以使运行的总体对多个层次结构有效?到目前为止,我所尝试的一切都非常缓慢。

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

AGGREGATE(NULL:TAIL(现有的[Date].[Date].[Date].[Date].[Members])。项(0),[Measures].[Contracts])

另一种可能性能更高的解决方案如中所述。它通过计算所有适用层次结构的范围,然后将这些层次结构交叉连接在一起来解决问题

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

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