浅谈数仓分层

2020-09-09  本文已影响0人  xiaoc024

1. Background:

生产中,数仓分层没有一个统一的规范,各家公司都有一套自己的逻辑。命名更是五花八门。但只要有一套适合业务的分层、建模逻辑并贯彻执行,对开发效率的提升将会是很大的帮助。这篇文章将介绍一种四层分层的方案。

2. Basic

2.1 维度表 vs 事实表

2.2 星型模型 vs 雪花模型

2.3 关系建模 vs 维度建模

3. Deep

掌握了上一节介绍的基本知识后,这里介绍一种四层数仓的搭建方式。分别是 ODS 层,DWD 层,宽表层(DWS,DWT),ADS 层。

3.1 ODS 层

该层保持数据原貌,不对数据进行任何修改。如用户行为埋点数据可以直接使用一行 line string 进行存储。数据库产生的业务数据则维持原表结构进行存储。

3.2 DWD 层

所谓维度建模就是在这一层完成的。整体分为四个步骤。

DWD 层的特点是多维度,少度量(单个事实表的度量值)。

根据以上步骤最终将得出一个表格:

时间 会员 地区 度量值
订单 次数、金额
支付 次数、金额
收藏 次数

得出该表格后,根据每一个事实表进行建模。以订单事实表为例,需要关联时间维度、用户维度、地区维度,并统计次数和金额。需要注意的是,如果维度有多级,需要使用 join 操作进行维度退化,满足星型模型的规范。

3.3 宽表层

该层的特点是主题驱动,在 DWD 层建模后理论上所有的统计都可以从 DWD 层进行统计获取,但是实际生产中往往是主题驱动的,如果不设置一层宽表层将会造成大量的重复计算并且统计分析的难度也大大提升。宽表层从维度出发,观察各个事实表的度量值并进行建表。

宽表层的特点是单维度,多度量(多张事实表的度量值)

宽表层可以进一步细化出 DWS 层、DWT 层。其中 DWS 层每行数据的是天粒度的度量值。DWT 层则更广泛,如事件开始时间、结束时间的度量值。粒度也会更大,如全部时间的累积度量值、近 30 天的度量值等等。这里以会员主题为例,说明 DWS 和 DWT 都具备哪些度量值。

3.4 ADS 层

该层主要利用上面的 DWD、DWS、DWT 层进行具体指标的分析

以上。

上一篇 下一篇

猜你喜欢

热点阅读