最新维度建模学习笔记

2020-10-10 17:15:31 浏览数 (1)

分享嘉宾:丘山,一线互联网数仓开发工程师

编辑整理:交个朋友

出品平台:小晨说数据

导读:小丘哥哥最近学习维度建模,整理了一些学习心得,跟大家一起分享一下,相互学习,共同进步,感觉好文章底部点个赞,鼓励一下小丘哥哥哈哈。

01

为什么要维度建模?

  • 效率:数据组织结构清晰,提高使用数据使用效率
  • 成本:数据模型统一整合数据并沉淀公共数据,使用方客减少关联和复杂逻辑加工,降低数仓的存储和计算成本以及理解成本
  • 质量:业务数据质量岑差不起,通过模型加工可改善数据质量,也可通过模型对外输出统一统计口径,降低出错概率

02

金融十大主题

数仓中3nf是面向主题的抽象,典型的代表是teradata发布的金融 FS-LDM,

  1. 当事人:当事人单个人或一组人
  2. 资产:资产当事人所有的具有价值的能够获得受益的事务
  3. 财务:企业内部的会计系统
  4. 区域:地理区域,无力的或电子的地址
  5. 行销活动:为了获取,挽留客户或提高用户的使用率而采取的战略,计划或促销活动
  6. 协议:在客户和金融机构之间达成的关于特定产品的协议
  7. 事件:客户通过金融机构的服务网络所实现的金融或非金融的事件
  8. 内部组织:金融机构或保险公司内部的业务单元
  9. 产品:一种可以在市场上交易的产品或服务,包括条款,条件
  10. 渠道:客户和金融机构或者保险公司进行接触的途径

03

为什么要分层?

  • 提高数据访问效率,空间换时间
  • 拆解复杂的处理过程,分层加工
  • 降低原系统变更影响,层次化让模型更具有弹性

04

维度建模的三种方法?

维度建模:维度建模是从分析的角度,将业务数据重新按照事实和维度的形式进行组合,用于度量某个业务过程

  1. 朴素维度建模方法
  2. 面向原系统维度建模方法
  3. 面向业务看流程维度建模方法

05

常用名词?

  1. 业务过程:业务过程是组织完成的操作性活动,例如下单、支付、退款都是业务过程。业务过程是一个不可拆分的行为事件
  2. 粒度:粒度是确定某一事实表的行表示的是什么,例如,订单粒度。粒度可已通过两种方式表述,一种是具体的业务含义,一种是维度属性组合所表示的细节程度
  3. 维度;用于描述业务过程中所涉及的,‘谁,什么,哪里,合适,如何,为什么’等背景,是分析问题的一个窗口,是人们观察数据的特定的角度,一类属性的集合构成一个维度,例如地理维度,包含了国家,省市区等级别的内容
  4. 维度属性:维度属性隶属于一个维度,读地理维度的国家名称,省份名称等都属于维度属性
  5. 事实:表示对业务过程的度量,事实通常是数字类型的,可以进行聚合和计算,例如下单金额

06

维度建模四个步骤?

  1. 确定业务过程
  2. 确定粒度
  3. 确定维度
  4. 确定事实

07

维度设计基础

(1)维度常用建

  • 代理建:编号自动生成,布局业务含义的建,一般用于处理缓慢变化维
  • 自然建:具有业务含义的建,例如区域维度中,行政区划代码510100作为主键
  • 持久建:始终保持不变,不受业务变更影响
  • 超自然建:一般在多个系统融合时的用的比较多,例如,原系统编码 原系统自然建拼接为超自然建或者联合主键
  • 智能建:具有股东的预先可确定行,如 yyyyMMdd

(2)维度层次结构

  • 作用:可以沿着维度的属性层次进行钻取
  • 固定深度:层次固定的维度属性,例如日期维度的年、季度,月
  • 可变深度:轻微层次不齐,但具有最大深度,最常见的是行政区划,通常3-6级别,还有一些深度不确定的层次,通过递归父子关系实现链接,常见的有类目,部门组织结构等,通常的做法是将其打平,转化为固定深度

(3)规范化与反规范化

(4)维度的整合与拆分

  • 垂直整合:维度的不同信息来源多个表
  • 水平整合:维度来源不同数据源
  • 水平拆分:维度可以按照类型进行拆分
  • 垂直拆分:更多考虑的是冷热属性的拆分,按稳定或经常变化的属性拆分,按照产出事件早晚拆分
  • 拆分原则:扩展性、效能、易用性

(5)杂项维度与退化维度

  • 杂项维度:该维度是由操作系统中的指示符或者标志字段组合而成,例如订单类型,支付状态等
  • 退化维度:维度除了主键没有其他内容可没有关联的维度表,但是该主键用于统计

(6)维度的缓慢变化

  • 重写:每次用最新的
  • 添加新行:拉链表
  • 添加新列:old column,new column

(7)快照维度

(8)一致性维度

08

一致性有哪些好处

一致性维度必要性:保证数据协调和集成,需要具有一致性维度的企业总线

09

事实的特点?

  • 可加:罪行或,最有用的事实,可按照事实表中的任意维度聚合,例如订单金额
  • 半可加:仅对模型维度可进行聚合的事实,例如商品的库存数
  • 不可加:不具备可加性,常见是比率类事实,例如“折扣率”

10

事实表三种?

(1)事务事实表:存储的是发生某个时间点上的一个事件,最明显的特点是无修改操作,仅追加记录。包括,单事务事实表、多事务事实表

(2)周期快照事实表:用于观察某个业务某个固定周期内的累计度量,最简单的一个按理为门店商品库存周期快照事实表

(3)累计快照事实表:用于定义过程开始,结束以及期间的可区分的里程碑,一个订单一条记录,多个业务过程数据会更新。(需要确定生命周期,才能确定回刷范围)

11

维度建模原则

  • 高内聚和低耦合:从业务特看,业务相近相关,粒度相同的设计到一个模型中,相关度比较高的部分尽可能的集中,不要分散低耦合就是说两个相关的模块尽可以能把依赖的部分降低到最小,不要让两个系统产生强依赖;从访问特性考虑,将高概率同时访问数据放一起,低概率同时访问的分摊存储
  • 公共处理逻辑下沉及单一
  • 成本性能的平衡(不要过度建模)
  • 数据可回滚
  • 一致性

0 人点赞