SSAS使用时间智能解决本年累计、同比、环比【转载】

       通常,我们需要使用MDX定义本年累计、同比、环比等一系列基于时间维度的计算指标。但是这样有一个麻烦的地方就是比如我有50个基础指标,每个指标都需要本年累计,那我就需要写50遍下面的语句:
create member CURRENTCUBE.[MEASURES].[本年累计交易金额] as
sum(periodsToDate([日期].[日期层次结构].[年],[个贷].[日期].[日期层次结构].currentmember),[交易金额]),
FORMAT_STRING = "#,#.00",
VISIBLE = 1;   

这样下来纯工作量是不是很大?

原谅我比较愚笨,后来才知道SSAS的时间智能可以很轻松的解决该问题:使用商业智能中的定义时间智能就可以很easy的解决该问题。它会生成一些列mdx计算脚本,其实我们还可以根据自己的需要有所增减,吼吼。
结果如下:
/*
  开始 [统计日期].[日期层次] 层次结构的时间智能脚本。
*/

Create Member 
  CurrentCube.[统计日期].[日期范围计算].[本年度截止到现在] 
  As "NA"; 
  
Scope(
       {
            [Measures].[交易金额],
            [Measures].[交易笔数],
            [Measures].[手续费],
            [Measures].[提支利差收入],
            [Measures].[持有金额],
            [Measures].[累计数量],
            [Measures].[累计金额],
            [Measures].[客户总数],
            [Measures].[交易数量]
       }
); 

// 本年度截止到现在
  (
    [统计日期].[日期范围计算].[本年度截止到现在],
    [统计日期].[D YEAR].[D YEAR].Members,
        [统计日期].[日期].Members 
  ) =

  Aggregate(
             { [统计日期].[日期范围计算].DefaultMember } *
             PeriodsToDate(
                            [统计日期].[日期层次].[年],
                            [统计日期].[日期层次].CurrentMember
             )
  ); 

end scope;

posted @ 2012-08-24 14:44  dekevin  阅读(1178)  评论(0编辑  收藏  举报