目录
- 一、为什么要分层
- 二、数据集市和数据仓库区别
- 三、数仓命名规范
- 1. 表命名
- 2. 脚本命名
- 3. 表字段类型
一、为什么要分层
分层说明:
ODS 层:原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。
DWD 层:对 ODS 层数据进行清洗 (去除空值,脏数据,超过极限范围的数据)、脱敏等。保存业务事实明细,一行信息代表一次业务行为,例如一次下单。
DIM 层:维度层,保存维度数据,主要是对业务事实的描述信息,例如何人,何时,何地等。
DWS 层:以 DWD 为基础,按天进行轻度汇总。一行信息代表一个主题对象一天的汇总行为,例如一个用户一天下单次数。
DWT 层 : 以 DWS 为基础,对数据进行累积汇总。一行信息代表一个主题对象的累积行为,例如一个用户从注册那天开始至今一共下了多少次单。
ADS 层 : 为各种统计报表提供数据。
仓库为什么要分层?
A、把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单的任务,方使定位问题。
B、减少重复开发:规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性。
C、隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。
二、数据集市和数据仓库区别
数据集市 (Data Market),现在市面上的公司和书籍都对数据集市有不同的概念。
数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。
数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段。
三、数仓命名规范
1. 表命名
- ODS 层命名为 ods_表名
- DIM 层命名为 dim_表名
- DWD 层命名为 dwd_表名
- DWS 层命名为 dws_表名
- DWT 层命名为 dwt_表名
- ADS 层命名为 ads_表名
- 临时表命名为 tmp_表名
2. 脚本命名
- 数据源_to_目标_db/log.sh
- 用户行为脚本以 log 为后缀,业务数据脚本以 db 为后缀
3. 表字段类型
- 数量类型为 bigint
- 金额类型为 decimal(16, 2),表示:16位有效数字,其中小数部分2位
- 字符串(名字,描述信息等)类型为 string
- 主键外键类型为 string
- 时间戳类型为 bigint