Analysis Service计算[期间增长率]的若干注意

本文介绍如何在AnalysisService中计算期间增长率,并提供了一种避免除零错误的方法。还讨论了在ReportingService中聚合期间增长率时的问题及解决方案,同时给出了具体的计算表达式实例。

定义:[期间增长率]=([本期间度量值]-[上一个期间度量值])/[本期间度量值]

1。Analysis Service使用计算来实现[期间增长率]的计算,有一个模板可以使用。
AS_PI.JPG
直接双击,可以得到一个计算值[期间增长]表达式如下:

None.gifCase
None.gif
// Test for current coordinate being on (All) member.
None.gif
When [<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember.Level Is
None.gif     
[<<Target Dimension>>].[<<Target Hierarchy>>].[(All)]
None.gif
None.gif
Then "NA"
None.gif
None.gif
// Test to avoid division by zero.
None.gif
When IsEmpty
None.gif     (
None.gif       ( 
None.gif         ParallelPeriod
None.gif         (
None.gif            
[<<Target Dimension>>].[<<Target Hierarchy>>].[<<Target Level>>],
None.gif            
<<Number of Periods>>,
None.gif            
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember
None.gif         ),
None.gif         
[Measures].[<<Target Measure>>] 
None.gif        )
None.gif     ) 
None.gif
Then Null
None.gif
None.gif
Else ( 
None.gif       ( 
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember,
None.gif         
[Measures].[<<Target Measure>>] ) 
None.gif       
-
None.gif       ( 
None.gif         ParallelPeriod
None.gif         (
None.gif            
[<<Target Dimension>>].[<<Target Hierarchy>>].[<<Target Level>>],
None.gif            
<<Number of Periods>>,
None.gif            
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember
None.gif         ),
None.gif         
[Measures].[<<Target Measure>>] 
None.gif       ) 
None.gif     )
None.gif     
/
None.gif     ( 
None.gif       ParallelPeriod
None.gif       (
None.gif          
[<<Target Dimension>>].[<<Target Hierarchy>>].[<<Target Level>>],
None.gif          
<<Number of Periods>>,
None.gif          
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember
None.gif       ),
None.gif       
[Measures].[<<Target Measure>>] 
None.gif     )
None.gif
End
None.gif
None.gif
// This expression evaluates the difference between the value of the numeric
None.gif
// expression in the previous period and that of the current period, as a
None.gif
// percentage of the previous period's value.
None.gif            


2。不要直接计算[期间增长率],因为如果直接计算[期间增长率],
 在使用Reporting Service时,在聚合的时候会可能有问题。比如小计的时候也可能会有问题
 所以我一般计算[上一个期间度量值],在Reporting Service里面使用
 期间增长率=(Sum(本期间度量值)-sum(上一个期间度量值))/sum(本期间度量值)来计算。

3。期间增长,一般针对[年],也可以针对其他的区间,这在公式中指定

4。[期间增长率]针对单个[度量值]

5。[期间增长率]针对[时间维度]的一个[层次结构],但是会兼容适用子层次结构和包含的属性。
H.JPG
图中的1号层次结构可以兼容2号,就是说,只要在公式中定义了1号层次结构,2号结构也可以在计算中使用。

6。时间维度是一个特殊的维度,需要单独定制和指定。
   这又向导可以使用,另外,关于时间维度我另外打算写一篇来介绍。

7。我给出我的一个计算的表达式例子。

None.gifCase
None.gif
// Test for current coordinate being on (All) member.
None.gif
When [UDTime].[LevelNameChs].CurrentMember.Level Is 
None.gif     
[UDTime].[LevelNameChs].[(All)]
None.gif
None.gif
Then "NA"
None.gif
None.gif
None.gif
// Test to avoid division by zero.
None.gif
When IsEmpty
None.gif     (
None.gif       ( 
None.gif         ParallelPeriod
None.gif         (
None.gif            
[UDTime].[LevelNameChs].[年 名称 中文],
None.gif            
1,
None.gif            
[UDTime].[LevelNameChs].CurrentMember
None.gif         ),
None.gif         
[Measures].[完成额] 
None.gif        )
None.gif     ) 
None.gif
Then Null
None.gif
None.gif
Else ( 
None.gif       ( 
None.gif         ParallelPeriod
None.gif         (
None.gif            
[UDTime].[LevelNameChs].[年 名称 中文],
None.gif            
1,
None.gif            
[UDTime].[LevelNameChs].CurrentMember
None.gif         ),
None.gif         
[Measures].[完成额] 
None.gif       ) 
None.gif     )
None.gif     
None.gif
End
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值