业界通用的 五层 数据仓库分层设计:
- 数据引入层 ODS(Operational Data Store)
- 明细数据层 DWD(Data Warehouse Detail)
- 汇总数据层 DWS(Data Warehouse Summary)
- 应用数据层 ADS(Application Data Service)
- 公共维度层 DIM(Dimension)
名字看着有点儿绕,英文单词缩写也不是很好记,我们来简单理解一下。
ODS 实质就是原始日志。
DWD 从原始日志中提取明细数据,提取过程就是把一行日志按照规则切分为多个字段,再对这些字段(值)进行过滤、转换等操作,俗称:ETL。
从一份或多份原始日志可以提取出一张或多张 明细表。
DWS 数据分析大多数时候是基于宏观统计数据实现的,不需要使用微观明细数据,可以结合产品和业务的分析需求,把明细表聚合成 汇总表。
聚合可以从 时间 和 维度 两个地方着手:
- 时间 把每秒的数据按五分钟、小时或者天粒度进行聚合。
维度 把地点的数据按国家、省份、城市或者区域进行聚合。
从物理角度看,聚合的目的是大幅度减少数据量,聚合的时间粒度越大、维度数目越少,数据量就越小。从逻辑角度看,聚合的目的是公共和复用,是能够尽可能更多地覆盖分析需求,聚合的维度数目越多,数据越通用。选取聚合的维度时,要综合考虑数据量和通用性。
从一张或多张明细表可以聚合出一张或多张 汇总表。
ADS 汇总表间接服务于产品和业务需求,讲究的是通用性; 明细表 直接服务于产品和业务需求,讲究的是个性化。一张明细表直接对应着产品和业务的一个或几个相互关联的需求,相对于汇总表,明细表维度数目更少,数据量也更小。
从一张或多张汇总表可以计算出一张或多张 明细表。
DIM 相当于数据字典。可以明确给出数仓中有哪些维度,维度名称是什么,维度含义是什么,维度值有哪些等信息,确保分析过程中逻辑认知一致、数据口径统一。
明细表、汇总表和应用表中的维度数据需要和维度表中的维度数据保持一致。
可以看出,数据仓库的分层本质就是从原始日志 -> 明细表 -> 汇总表 -> 应用表的过程,实际使用时也不必完全拘泥于五层的设计,可以结合业务、数据和系统的具体情况,灵活地添加或删除层次。