马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 bjourway 于 2011/12/6 17:55 编辑
MDX 中的累积计算
在 MDX 中计算累积值 (Accumulating) 尤其是按时间的累积是一个非常常见的需求,但是在现有的 SSAS 环境下没有简单和直接的方法和函数来实现。按时间计算累积值是在很多财务系统、统计系统中非常常见的需求,比如计算库存:每天都有出入库的商品,我们可以很简单地按天、月、年等时间统计出入库的发生数,但是却不能很简单地得出每天实际的库存数,比如下面的例子:
| 时间 | 入库数量 | 库存数量 | | 2009-01-01 | 50 | 50 | | 2009-01-02 | 20 | 70 | | 2009-01-03 | 120 | 190 | | 2009-01-04 | 65 | 255 | | 2009-02-01 | 100 | 355 | | 2009-03-12 | 80 | 435 |
在上表中,每一天的实际库存数量 = 当天的入库数量 + 库存数。在 Cube 设计中,我们可以使用 PeriodtoDate () 函数来实现这中计算。比如使用下面的 MDX 表达式建立一个 Named Calculation:
Aggregate(PeriodsToDate([DimDate].[DateHierachy].[Year]),[Measures].[Fact Reservation Acts Count])
下面是在 Cube Brower 中显示的结果,在这个图里我们可以看到当天的库存数是一个累积数。
PeriodToDate 函数的语法是:PeriodsToDate( [ Level_Expression [ ,Member_Expression ] ] ) , 详细的使用参考MSDN 文档:http://msdn.microsoft.com/en-us/library/ms144925.aspx
该贴已经同步到 bjourway的微博 |