数仓建模的思路步骤

背景

通过最近的学习与工作总结,针对不同层级的数仓建模特点,记录数仓建模实战中的一些思路与步骤。涉及到的数仓分层有:ODS层、DWD层、DWS层/DWT层、ADS层,其中ODS层属于业务数据库贴源层,存放的数据与业务系统源表保持一致,所以此处不做讲解。

DWD层建模思路与步骤

dwd层是以业务过程为驱动进行建模,dwd层需要构建维度模型,采用星型模型构建,呈现的形态为星座模型。

dwd层建模步骤

选择业务过程->声明粒度->确认维度->确认事实

选择业务过程

  • 如何选择业务过程?

梳理业务系统的业务流程,整个业务流程中产生用户行为的操作可以记为一个业务过程

  • 需要遵循的原则?

挑选感兴趣的业务线,如下单业务、支付业务、退单业务,每个业务线对应一张事实表。

中小型公司:一般涉及的业务表在50张以下,这时候尽可能选择所有业务线。

大公司:一般涉及的业务表比较多,有的大公司涉及的业务表多达1000张左右,这时候需要根据业务需求选择对应的业务线。

  • 实例
数仓建模的思路步骤_第1张图片 电商业务流转图

上图中业务流转是:用户进入首页,通过搜索商品或者点击营销活动查看商品列表,当看到自己喜欢的商品后就会点击查看对应商品详情,发现这个商品还不错(哈哈性价比好高啦)一键点击加入购物车,然后继续买买买看看看,当想买的商品全部加入购物车后就提交订单进入支付页面,打开支付宝完成订单支付,忙完这一切终于可以满怀期待的等待宝贝送到家门口了。几天后快递送到了家门口,怀着好奇的心理打开了包裹,发现有的商品好喜欢啦果断收藏好评,但有的商品就有点不满意啦干脆直接退了吧。

通过上面的业务流转可以梳理的业务过程有:搜索商品   加入购物车   提交订单   支付    退单   收藏     评价 ,每个业务过程通过记录到一张事实表中存放,这样就完成了业务流转抽象到事实表的过程。

声明粒度

  • 什么是数据粒度?

数据粒度指数仓的数据中保存数据的细化程度,通过声明粒度可以精确定义事实表中每一行表示什么意思。

  • dwd层该如何声明数据粒度?

dwd层按照最小粒度进行划分,以满足上层各种数据需求取数。

确认维度

  • 维度是什么?

描述谁、何时、何处等信息,通过维度可以从不同角度看待事实

  • 确认维度的原则?

根据维度建模中的星型模型进行维度退化,维度之间不会有关联关系,维度只会与事实表关联。如:会把商品表关联的非事实表信息退化到商品表中生成商品维度表(商品分类、商品品牌、商品其他属性等信息退化到商品表中)。

后续需求中是否要分析相关维度的指标。如:后续的需求需要统计,哪个时间段的订单多,哪个地区的订单多,哪个用户的订单多,这时候需要关联的维度就有时间、地区、用户。

下图为电商事实表与维度表之间的关联:

左右两边是涉及的事实表,中间是所有的维度表,中间的次维表信息会退化到主维表中,这种设计方式就是基于星型模型进行维度建模

数仓建模的思路步骤_第2张图片 电商事实表与维度表之间的关联

确认事实

  • 什么是事实?

指业务过程中的度量(个数、金额、次数、件数等这些可以累加的值),例如:订单金额、订单数量

  • 如何确定事实表中的度量有哪些?

参照业务表中可以进行累加的值

通过以上4个步骤最终得到的结果

数仓建模的思路步骤_第3张图片 dwd层数据建模

DWS层&DWT层建模的步骤与思路

DWS层与DWT层统称为宽表层,设计思路相同,这两层主要是解决重复计算的问题。所有指标都统一进行计算,并将结果保存在该宽表中,这样就能有效避免数据的重复计算。

  • 需要建哪些宽表

以维度为基准

  • 宽表里面的字段

是站在不同维度的角度去看事实表,重点关注事实表聚合后的度量值。

  • DWS与DWT的区别

DWS的聚合粒度是按天汇总,记录主题对象当天的汇总行为,如:某地区的当天下单金额,下单次数

DWT的聚合粒度是一个比较长的周期,记录主题对象的累计行为,如:某地区最近7天(15天,30天)的下单次数、下单金额。

ADS层

报表层

 

参考内容

大数据数仓实战项目P163~P169:https://www.bilibili.com/video/BV1dD4y1d7wL?p=163

 

你可能感兴趣的:(数仓建设,数仓建模)