用 MDX 计算指定时间段的累计值(转自晓易家园)

用 MDX 计算指定时间段的累计值

指定时间段的累计值是数据仓库里经常需要计算的字段,如当年、月截止库存量、销售额等。

这个例子是论坛7年前的数据,03~04年增加6倍,但还不是增长最快的时候。

这种计算用 mdx 函数实现非常简单。

使用 PeriodsToDate 函数就可以实现

PeriodsToDate(level,member),第一个是层次,第二个是当前成员

下面是一个使用 PeriodsToDate 函数的例子,计算每日的年累计主帖数

with MEMBER [Measures].[年累计主帖数]
 AS sum(
    PeriodsToDate(
        [日期].[日期层次].[年] -- ,
       -- [日期].[日期层次].CurrentMember
       )
    ,[Measures].[主帖数]
)
 
select {
 [Measures].[主帖数],
 [Measures].[年累计主帖数]
 }  on 0,
[日期].[日期层次].[日期].members on 1
from forum 

在 sql server ssas 里新建计算成员,直接写:

sum(
     PeriodsToDate(
        [日期].[日期层次].[年] ,
       
        [日期].[日期层次].CurrentMember)
    ,[Measures].[主帖数]
)

PeriodsToDate 还有几个简化函数 YTD,QTD,MTD,分别对应层次年、季度、月份

用起来更简单。

在 sql server ssas 里新建计算成员,计算月累计直接写:

sum(
    MTD()
    ,[Measures].[主帖数]
)

PHP 计算这个要写不少代码。

posted on 2013-12-05 14:53  EasyBI  阅读(1455)  评论(0)    收藏  举报

导航