零售业务
维度模型设计的4步
综合考虑用户需求、数据来源,设计维度模型。只考虑数据源,以数据驱动,基本不能取得成功。
选择业务过程
声明粒度
- 客户销售事务上的每个产品扫描到一行中
- 医生开具的票据的列表内容项采用一行表示
- 机场登机口处理的每个登机牌采用一行表示
- 仓库中每种材料库存水平的每日快照采用一行表示
- 每个银行账户每月的情况采用一行表示
应以业务数语表示,用主键声明是不可取的
确定维度(列名带有key后缀)
“谁、什么、何处、何时、为何、如何”
常见维度有:日期、产品、客户、雇员、设备
确定事实
如:订货数量、成本总额
POS 系统收集的事实包括销售数量、单价、折扣、净支付价格、扩展折扣
零售业务案例研究
可加事实
收入
不可加事实
利润率
计算公式:汇总的比率,而不是比率的汇总
维度表设计细节
日期维度(还有当天时间维度:time-of-day)
可以提前建立,制作10或20年的,20年为7300行。
当前与相对日期属性 一节没看懂
产品维度
价格可以定为维度也可以定为度量
商店维度
- 多层次维度
- 维度表中的日期
促销维度
临时降价、礼券、广告、展示 可以分别制作维度表与统一制作一张促销维度表
-
空外键
不应在事实表中使用空值键,正确的设计应该在对应的维度表中包括一行以表明该维度不可用于度量。
-
空属性
应用“未知”与“不适用”代替空属性,因为空值基本不会显示在页面上,会造成数据不一致,并且有些BI工具禁止使用空值属性
-
空事实
没看懂
退化维度
定义:处于事实表中,没有链接到维度表
例如:POS机事务号(可以用来把同一个购物小票购物车中的商品关联起来,并于原系统关联),订单号码,发票号码、
无事实的事实表
统计处于处于促销状态但尚未销售的产品,事实表中只包含出售的商品
维度与事实表建
维度表代理键
维度表应该是代理键而不是操作系统标识符:无意义键、整数键、非自然键
强烈建议使用非自然键
自然和持久的超自然键
没看懂
退化维度代理建
通常不会给退化维度分配代理键,如果多个商店的POS单号不唯一时,需要分配代理键。
日期维度中智能键
YYYYMMDD 整数,并未打算提供给业务用户和bi应用,为了防止绕过维度表采用函数计算
事实表代理键
并未要求一定在事实表中使用代理键。
优点
- 直接的唯一标识:直接的获得事务表的一行
- 返回或恢复海量加载:根据id断点续传。
- 插入加删除替换更新
- 使用事实表代理键作为父\子模块中的父节点
抵制规范化冲动
雪花模型
规范化的维度表称为雪花模型:不利于多属性浏览、与位图索引
建议抵制采用雪花模型的冲动原因:易用性和性能
支架表
尽量避免使用支架表
错误案例:蜈蚣表
同一个事实表中中不能超过20个维度外键,多余则考虑维度合并,2个维度组合比笛卡尔积小则可以考虑合并。
库存
价值链
多数企业存在关键业务过程价值链。
OLTP 通常为价值链每个步骤建立事务或快照。
OLAP主要目标是监控关键步骤的性能指标。
价值链为企业DW/BI环境提供高层知识。
库存模型
提升获利,减少脱销情况,减少总的库存管理费用。
库存周期快照
每天600万(60000种产品*100个商店),可以保存近60天日快照,其余周快照。
半可加事实
度量对某些维度是可加的,但不是所有维度。称其为半可加事实。
库存可以按照产品或商店汇总,不可按日期汇总。
增强型库存事实
需要现存数量事实协同以度量库存运动变化情况(流转数量与日供货数量)
日周转次数:卖出/现存
年月周周转次数:卖出/平均库存
库存事务
库存累计快照
事实表类型
- 事务
- 周期快照
- 累计快照:不常见,通常表示效率与工作流经过时间
价值链集成
数据仓库总线架构
为了数据仓库的成功,需要一种架构化,增量式的方法。
理解总线架构
总线架构可以指导不同组、不同时间、实现不同的维度模型、使不同模型有效共存。
总线矩阵(重点)
最重要的交付产物
解决主数据管理和数据集成的需求/
用途:结构规划、数据库设计、数据治理、协调、项目评估以及组织交互
利益相关方矩阵
常见总线矩阵错误
定义的过宽或过窄
- 基于部门的或包含太多内容的行。
- 报表为中心或定义过于狭窄的行。
一致性维度
多事实表钻取
跨钻:
- 多个SQL 分别查询每个维度模型
- 基于公共维度属性全外连接
相同的一致性维度
包含属性子集的缩减上卷一致性维度
包含行子集的缩减上卷一致性维度
没看懂
总线矩阵缩减一致性维度
没看懂
有限一致性
如果一个集团公司业务范围由众多分公司组成,则没必要开展集成工作