数仓分层的目的:
一、把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题
二、减少重复开发:规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性
三、隔离原始数据:不论是数据的异常还是数据敏感性,是真实数据与统计数据解耦开。
数仓分层:
ODS(Operation Data Store)层:原始数据层。存放原始数据,直接加载原始日志、数据,数据保持原貌不作处理
DWD(Data warehouse detail)层:对ODS层数据进行清洗(去除空值、脏数据、超过极限范围的数据)、维度退化、脱敏
DWS(Date warehouse service)层:以DWD层为基础,按天进行轻度聚合
DWT(Data warehouse Topic)层:以DWS层为基础,按主题进行汇总
ADS(Application Data Store)层:为各种统计报表提供数据
表命名规范:
- ODS层命名为ods_表名
- DWD层命名为dwd_dim/fact_表名
- DWS层命名为dws_表名
- DWT层命名为dwt_主题名
- ADS层命名为ads_表名
- 临时表命名为xxx_tmp
-
用户行为表,以log为后缀
表字段类型:
- 数量类型为bigint
- 金额类型为decimal(16,2)
- 字符串(名字,描述信息等)类型为string
- 主键外键类型为string
- 时间戳类型为bigint