数仓建模的全过程【重点】

数仓从前到后分为ODS原始数据层、DWD明细数据层、DIM维度层、DWS服务数据层、DWT数据主题层、ADS数据应用层。

1.ODS原始数据层:

这层用来存放原始数据,数据保持原貌不做处理,起到备份的作用。ODS层接收的数据分为用户行为数据和业务数据。

(1)用户行为数据的建模思想:

建表:因为用户行为日志都在一张表里,所以只创建一张表即可。

表结构:因为日志表中的数据是一行数据,所以只创建一个String类型的字段即可。

表的分区规划:按天分区,每个分区放当天采集的用户行为数据。

(2)业务数据的建模思想:

建表:参照MySQL数据库,同步哪些表就建哪些表。

表结构:参照MySQL表的结构,同步哪张表就对应创建一样的表结构。

表的分区规划:按天分区,每个分区放当天从关系型数据库同步过来的数据。

2.DWD明细数据层 和 DIM维度层

(DWD层放事实表,DIM层放维度表)

DWD层需要对数据进行清洗,过滤掉我们不需要的数据,留下我们需要的数据。

所以DWD和DIM层需要构建维度模型,一般采用星型模型,最终呈现的状态为星座模型。

维度建模一般遵循四个步骤:选择业务过程->声明粒度->确认维度->确认事实

(1)选择业务过程:

就是挑选我们感兴趣的业务线,比如电商系统中的下单、支付、退款、评价等业务,一条业务线对应一张事实表。

(2)声明粒度:

数据粒度指保存数据的细化程度或综合程度的级别。声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,来应对各种各样的需求。

(3)确认维度:

确定维度的原则是:后续需求中是否要分析相关维度的指标。 维度的主要作用是描述业务的事实,主要表示的是 “ 谁,何处,何时 ”等信息。如:用户、省份、时间、活动等。

(4)确认事实:

这里的“事实”指的是业务中的 度量值 (次数、个数、件数、金额等可以用于累加的) ,例如订单金额、下单次数等。

在DWD层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。

3.DWS服务数据层 和 DWT数据主题层

DWS和DWT层统称为宽表层,设计思路相同。

这两层的目的主要是提高数据的复用性,避免数据重复计算。做法是将所有指标统一进行计算,并将结果保存在宽表中。

对于宽表来说有两点需要知道:

(1)需要建哪些宽表:以维度为基准。(就是以维度表为核心)

(2)如何确定宽表里面的字段:站在不同维度的角度(维度主键id)去看事实表,重点关注事实表聚合后的度量值。宽表的主键对应维度的id,如用户主题表的主键对应的就是用户维度表的id,其余字段是维度模型中与该维度相关的事实表的度量值的聚合值。

DWS和DWT层的区别:

DWS层存放的 是 所有主题对象当天的汇总行为 ,例如每个地区当天的下单次数,下单金额等。

DWT层存放的是 所有主题对象的累积行为 ,例如每个地区最近7天(15天、30天、60天)的下单次数、下单金额等。

4.ADS数据应用层

这层就是对各大主题指标分别进行分析,没有建模可言。

详细内容可参考: 数仓建模的思路步骤

维度建模详细内容可参考: 数仓建设中最常用模型--Kimball维度建模详解 (qq.com)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值