数据仓库实践杂谈(十五)——维模型

[目录]

数据仓库实践杂谈(十五)——维模型

前面说到过,维模型的典型结构就是维表+事实表。一个事实表+关联的多个维表,组成一个星型模型。多个事实表+多个可能共享的维表组成星系模型。
维模型示意

  • 维表:所谓维就是分析的角度,统计的方向。比如,我们希望看到某年某月所有的订单数量,或者某年某月某个产品的订单数量,甚至某年某月某个产品在某个地区的订单数量。一般的分析角度都会有很多,所以,维模型也称为多维模型。
  • 事实表:事实表是反映业务发生事实的表,由其所关联的维表的外键和需要统计的指标组成。因此,统计算法可以看做是在事实表不同条件分组汇总(SUM & GROUP BY)。从概念上,指标也可以看做一个维度,但为了减少事实表的记录数量,便于操作,把指标维拉平了放到事实表的字段里面了。

从星型模型的结构可以看出,这个结构,丢弃了业务细节,只保留汇总指标,换来是对指标快捷、灵活的统计。

星型模型中,维表是冗余的,逆泛式的。这样的做法,主要就是为了查询方便——毕竟相比事实表,维表的数据其实很少——冗余的好处是减少关联的表的数量。从业务的角度分析,比如银行需要的维表大概有如下公共维度:

  • 机构
  • 科目
  • 产品
  • 币种
  • 时间
  • 地区
  • 客户等。

而维度有一个很重要的概念是“层次”。比如机构,有总行、一级分行、二级分行、支行;时间有年、季、月、周、日;地区有国家、省、市等;当然也有单层的,比如币种(但也可能有“外币合计”这样的汇总)。

每一条维表的记录,都生成一个主键,相当于指向维表最明细的一个项目。这样就形成了星型模型的基本“汇总”规则:沿着维表层次汇总。比如每七天合计就是周。

基于星型模型,产生了一些特别的分析操作:
切片

  • 切片:能呈现出来的报表是一个二维表格,形象的理解,从多维模型里面做一个报表,相当于切出一个平面层,比如行上放机构、列上放指标;当然可以多个维度叠加生成所谓的“T型头”。
  • 下钻:从高汇总层次维度展开,如机构维度,对一级分行数据展开到其下属的二级分行,类似树状菜单的展开。
  • 上钻:从低层次维度收起到高层次维度,如从二级分行汇总到一级分行,类似树状菜单的收起。
  • 抛出:从指定的汇总数据关联到对应的明细数据,如从某分行的存款发生额指标关联到计算出该指标的所有存款交易明细数据。
  • 其他:例如旋转、过滤等,基本是界面上的操作了。

到现在为止提到的星型模型,是逻辑上的,看上去,也是一种E-R关系,也就是其实可以在关系数据库中存储、汇总、查询。直接在关系数据库实现星型模型的处理和查询,叫ROLAP。这里的问题是,初始建立的星型模型表,事实表里存放是明细的汇总数据,也就是时间到天,机构到支行等,最明细的汇总。如果仅仅是这一个事实表的话,需要查询高层次的汇总数据,就需要实时汇总了,这基本上效率会低了。

因此,如果想在关系数据库实现OLAP查询,还要快,就需要实现汇总好各个层次的数据,相当于各个维度层次数量的笛卡尔积,数量还是非常多的。厉害的人,会做各种算法,提前预测用户的查询行为,各种缓存策略,以达到存储空间和查询效率的平衡。ROLAP比较出名的是Mondrian,一个开源的软件,利用一个叫MDX的语言,可以类似关系数据库的SQL那样去查询指定维度和过滤条件的数据。支持通过配置预定义预汇总的维度和层次。但Mondrian很多年都没有更新了。不过值得称道的是MDX(微软提出的)语言。另一方面,也产生了Cognos这样的商业产品,叫做MOLAP,实现全量汇总,并且利用压缩算法,达到存储优化。如果不差钱的话,严重不建议自己搞ROLAP,用工具吧。

大数据时代到来了,存储空间已经是不需要在意的问题了。尝试一下kylin吧。利用Hbase做汇总存储,算是一种新型的MOLAP。

MOLAP工具一般提供配置界面或者配置文件,可以指定所需要的表中的字段作为维表的某一层次,同时指定事实表。跑模型的时候把数据加载到工具里面并进行汇总,生成自己的存储格式文件。虽然模型设计并不要求必须是符合星型模型的表,就是相当于工具做一次数据转换;但要做OLAP分析,还是充分建议事先作好业务分析,建立好完整的星型模型。

扫描二维码关注公众号,回复: 9522437 查看本文章

在使用MOLAP的时候,就会发现基于Hadoop来实现的一个巨大好处了:

**所有历史数据在线化**

不需要过分考虑服务器、存储的成本,不需要担心空间不够,数据量太大,全部在线化,什么磁带,什么冷备都是浮云。OLAP模型做的不好?业务需求调整?增加分析维度?增加指标?新增一个模型来玩!或者干掉原来的重来。都so easy!建一个模型之后跑一趟数据来测试需要等一晚上的日子都过去了。

未完待续。

上一篇:数据仓库实践杂谈(十四)——数据模型参考

下一篇:数据仓库实践杂谈(十六)——维模型

发布了20 篇原创文章 · 获赞 7 · 访问量 2484

猜你喜欢

转载自blog.csdn.net/cfy_fantasyxx/article/details/104431455
今日推荐