数仓分层是怎么分的,学习这个感觉好抽象
1 个赞
数仓分层:用餐厅做饭来理解
把数仓想象成餐厅后厨,每一层都是做菜的一个环节。
一、四层结构
| 层级 | 餐厅类比 | 数仓作用 | 数据示例 |
|---|---|---|---|
| ODS | 菜市场买的菜 | 原始数据,原封不动 | 业务库同步来的订单表 |
| DWD | 洗好的菜 | 清洗干净、格式统一 | 订单表去重、日期格式统一 |
| DWS | 配好的菜 | 按主题轻度汇总 | 用户当日订单汇总 |
| ADS | 端上桌的菜 | 报表直接用的数据 | 日销售报表 |
二、为什么非要分层?
问题1:不分层会怎样?
- 报表需求变了,要从最原始的数据重新算 → 像每次做菜都从买菜开始,累死
问题2:分层的好处
- 复用:DWD层清洗好的数据,多个报表都能用 → 像洗好的菜,炒什么菜都能直接用
- 清晰:每层职责明确,出问题好定位 → 菜坏了知道是买的坏还是洗的不干净
- 效率:汇总层提前算好,报表直接取 → 像配菜提前备好,客人点单直接炒
三、举个具体例子
原始数据(ODS层):
订单表:order_20250101_001, 张三, 2025/1/1 10:30:00, 100元
清洗后(DWD层):
- 去掉脏数据
- 统一日期格式:2025-01-01
- 关联用户ID
汇总后(DWS层):
张三当天订单总额:100元
报表用(ADS层):
日销售报表:1月1日总销售额 10000元
四、一句话总结
ODS = 买菜(原始)
DWD = 洗菜(清洗)
DWS = 配菜(汇总)
ADS = 上菜(报表)
每一层都为上一层服务,底层是原材料,上层是成品,中间层让复用变得可能。
2 个赞
very good