全周期累计指标,在dm层用什么方式来支持报表查询

0
做数据经常遇到报表需要展示全周期累计值这种指标。我们有一个班级收入简单堆积表,记录班级每天的收入。 
问题: 报表需要根据时间条件查询任意某天的累计收入(截止到某天之前所有收入的和),我们dm模型需要怎样支持这种需求??
我能想到的方案有三种:
1. 直接提供班级收入的简单堆积表,让报表开发人员自己去做累计。
   优点:简单
   缺点:可能需要对很大的数据进行合计
2.每天对所有班级的累计收入做一个快照
  优点:不用计算
  缺点:会有很大的空间浪费
3.做一个拉链表,来描述班级的累计收入
  优点:节省空间,不用计算,但是得从拉链表取数
  缺点:实现优点复杂, 最关键的是模型好像不像是标准的星形模型了
 
这个问题困扰我好长时间了 ,这种累计指标,大家都是怎么处理的
 
 
 
已邀请:
0

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-12-14 回答

这个取决于需求以及你所选择的技术方案,简述如下但未必全面:
功能性需求:
1. 需求比较固定,比如就是按照本年累积,去年同期累积,季度,之类的对比分析
2. 需求是动态的,简言之就是随便每个阶段都可以动态累积对比
非功能需求:
1. 基础数据量大,而汇总后数据规模锐减
2. 并发多
3. 此类的需求是否可以合并,比如多张报表/分析均有此类需求,则建一张汇总表即可解决多张报表需求问题
 
技术方案的选择:
1. 传统RDBMS
2. 基于列存,或者MPP,内存数据库等为了OLAP而生的数据库
 
 
这几种情况的选择其实是不同的,如果是动态的对比需求,你预计算也没用;如果并发多,以及多张报表均有这类的需求,可能还是建立汇总表好一些;而如果你选择的数据库在汇总方面有很大的优势,也可以不考虑存储汇总数据,以上,具体问题具体分析。

要回复问题请先登录注册