通过真实案列理解维度建模原理是学习的目的,也是学习一个概念的最佳实践。
1、维度建模设计的4步过程
1.1 选择业务过程
业务过程是组织完成的微观活动
或许面对一个行业,你无法明确知道那些是业务过程,下面给出几点常规判断方式:
- 业务过程通常用行为动词表示,如下单、支付、投保、核保、赔付等
- 业务过程通常由某个操作型系统支撑,如业务系统、支付系统、购买系统、账单系统等
- 业务过程建立或获取关键性能度量,如价格、保费等
- 业务过程通常由输入激活,产生输出量,如下单是输入,产生下单明细信息就是输出;用维度建模人员的话来说,一系列过程产生一系列事实表;
1.2声明粒度
精确定义事实表每行数据到底想表示什么
每个业务过程用一行表示,如客户销售事务上的每个产品扫描到一行中,每个银行账户每月的情况采用一行表示等;
1.3确定维度
主要解:业务人员如何描述来自业务过程度量事件的数据?
如下单过程,需要用谁下单、什么地点、什么时候等维度来度量下单金额这个事实
1.4确定事实
主要回答过程的度量是什么?
回答好这个问题,事实表度量值就出来了。
如保险中赔付过程主要用赔付金额来度量这个过程
2、零售业务案列研究
上面只是简单回顾维度建模过程,接下来用零售相关案列更好理解维度建模;
背景描述
假设你在某大型电商公司工作,该公司连锁店有100个,分布在不同省份,每个店都有完整的杂货、冷冻食品、日常生活用品、肉类、农产品类、花卉、保健、美容等类别产品,总之日常生活中常见产品基本都有;
每个商店包含称为产品同一编码(SKU)1–6000的不同产品,SKU属于电商领域一个术语,用来标识某个产品;
简单理解,每个店面包含6000种产品,每个产品都有唯一编号,以区分产品种类;
每个商店数据存在下面几个地方:收银机、收银发票、商店后端供货商发货数据
对于公司层面来看,主要关注订单、库存、销售产品的组织工作,目的是为了利润最大化;事实跟踪产品销售。库存、打折优惠等指标,灵活调整销售策略、管理策略等;
公司收入来源主要是单个产品价格,通过分析价格,采用促销、临时降价、各种广告、礼券、店面展示等调整手段,实现利润最大化;
利用维度建模思想,构建基于电商的数据仓库;
2.1选择业务过程
该业务系统中,管理层希望更好理解通过pos系统获得用户购买情况;
建模业务过程是pos零售交易,pos系统产生的数据用于分析被销售产品,哪几天,在哪个店,用哪种方式销售;
2.2声明粒度
主要考虑:模型应该包含那个级别细节数据?
原则:选择最细粒度
这里最新粒度是pos交易单个产品,如果选择粗粒度汇总数据,对性能是有提升,但是不能满足多样化、灵活查询,不能下钻到数据细节了解每个产品销售情况;
2.3确定维度
主要考虑:从那些方面描述一个产品销售过程?
可以从销售日期、销售商店、那种渠道销售的产品被促销、处理销售的收款员、用户支付方式等维度描述产品;
小结:维度数据包括(日期、产品、门店、促销、收银员、支付方式)
2.4确定事实
将哪些事实放在事实表中,上面粒度声明有助于稳定相关考虑,事实必须和粒度吻合;
pos系统收集的事实包括:销售数量、单价、折扣、净支付价格、扩展折扣、销售额等
通过上面分析,事实表雏形如下:
上面事实表一共包含4类事实:销售数量、销售可扩展额、销售、成本额,且都是完全可加的
下面讨论几种事实
- 计算获得的事实
扩展销售总额-扩展成本总额=总利润额(收入)
- 不可加事实
利润率=利润总额 / 扩展销售总额
注意:单价也是不可加事实,把单价相加毫无意义;
小结:本节主要分析零售pos系统,结合维度建模设计思想,用案列理解这种思想的具体实现;
下一小节继续讨论维度表设计的更多细节
查看更多内容可关注微信公众号