时间相关的计算在MDX中就像爱情在小说或电影中一样,是永恒的主题.
根据环境与需求不同,有多种动态计算天数方法.
The兄给出了最直接,经典的方法. 在能用参数的场合,这种方法效率最高.
在不能使用参数的情况下,可尝试下面两种方法:
1. 把事实表中的日期外键添加到度量组中,取名为"天数"或...,缺省聚合为distinctCount.
这种方法最简单,但受到一些限制, 仅适用于有限的环境.
比如事实表中日期不连续,而您需要计算连续的天数,此方法就无能为力了.
2. 在CUBE中增加一个度量组,其IgnoreUnrelatedDimensions属性设为"True",并建一个度量"天数".
该度量的值与日期维度主键一一对应, 缺省聚合为Count.
SSAS 2008 中的动态命名集可以方便地处理类似动态天数计算的问题.
就2005而言, 还有一些其他方法, 可参考这里:
http://sqljunkies.com/WebLog/mosha/archive/2007/05/27/counting_days_mdx.aspx如果需要计算累加天数, 可参考这里:
http://blogs.conchango.com/christianwade/archive/2006/04/30/MDX-Sprocs-and-Scripting_3A00_-An-Interesting-Example.aspx俺的发言完了,请各位领导批评指正