大数据下的数据仓库对数据进行了分层管理,分为ODS、DWD,DWS,ADS层,可以把数仓分层和程序设计中的三层架构进行对比:
相同点:
- 第N-1层为第N层提供服务,每一层都有单独的职责。
- 降低复杂度,
- 减少重复开发,提高复用性
不同点
- 程序中的分层是为了关注点分离, 而数据的分层更像是一个萃取的过程,数据由低价值到高价值转变。
ODS 是原始数据层 , 这一层好理解 就是把从各个地方抽取的数据,按照原貌保存下来,关于这一层, 有四点
- 数据在抽取过程中,不要有过滤和转换操作,保持数据的原汁原味,在数据出现问题的时候,方便溯源。
- 因为这层的数据保存时间长(至少半年),所以数据格式尽量采用带压缩格式的。
- 数据分区(partiton)保存
- 如果使用HIVE处理,使用Hive外部表。
这一层是数仓的基础,根据以往经验, 这一层至关重要,数据要确保完整性,不丢 ,不重复。如果这一层数据不准确,后续下游数据也一定不准确,产出的报表也就失去了意思, 甚至会误导运营。
DWD叫数据明细层, 一般做两件事:
- 数据清洗:DWD的数据来源于ODS层,从ODS层抽取数据的时候会做数据的清洗和转换
- 数据连接:这层的数据是为DWS层(汇聚层)做准备, 而为了方便汇总数据, 就先要把相关统计维度和要统计的表放入到一个表里面
这一层除了ETL, 最常见的可能就是 Join 操作。
数据服务层,这一层 就是“站”各个维度看数据,时间粒度一般为当日。
比如
用户宽表: 用户当日访问次数,当日浏览商品次数,当日点击商品次数,当日购买次数,当日支付数。
这一层最常见的就是 group by 操作。
这一层,是在DWS层的基础上进一步计算。计算出的数据更贴合业务。
比如 留存率,流失率,连续登陆
用户漏斗分析
top 排名
复购率