花了我一点时间,弄清楚它可以在何时使用和不使用时间维上的层次结构。根据我的数据,我的立方体结构,这是我放在一起:
with member [Measures].[RunningTotal] as
'sum({[Deferred Revenue Date].[Standard Calendar].CurrentMember.Level.Item(0):[Deferred Revenue Date].[Standard Calendar].CurrentMember}, [Measures].[Deferred Revenue Amount])'
select
{[Measures].[Deferred Revenue Amount]
,[Measures].[RunningTotal]
} on columns,
nonempty([Deferred Revenue Date].[Standard Calendar].[Date], [Measures].[Deferred Revenue Amount]) on rows
from
DW;
一个技巧就是在计算度量列是否有与维度和度量的交会点,将只返回值非空()子句。如果没有它,您将在度量列中获得一堆NULL,并在计算的度量值列中获得一堆重复的值。这实际上是一个非常方便的查询。
无论您在SELECT语句中指定的级别(无论日期,月份还是年份),计算所得成员都将工作。就我而言,我试着尽可能接近你想要做的事情。我为我的多维数据集写了一个类似于你的查询,它在43秒内运行。这个新的程序运行大约2秒钟,我们有相当多的数据,所以它应该运行得更快,假设你有聚合内置等。
MDX的问题是有像十八种方式做一些事情,只有一两个将运行良好。
祝你好运。
你有样品你正在运行的MDX的? – 2009-01-15 16:14:21