从0到1构建数据仓库思路:
0.建议先和运营构建业务数据矩阵
如下表,是业务数据矩阵的表示方法,其中每一列是一个业务主题,每一行是一个数据主题。
- 业务主题:我们可以将一个业务主题理解为运营的一条业务,或者说数据仓库仓库待建设的一个数据集市。
- 数据主题:一般来讲,我们会侧重于将数据主题理解为行为数据主题,比如说登陆、点击、下载等行为主题。
如果了解了什么是业务数据矩阵,那么它的作用就很容易被理解。简单来讲:
- 能够帮助数据仓库架构师清晰地梳理整个数据体系。
- 能够帮助决策者(各位老板)从宏观的角度了解数据仓库的整体情况。
- 能够让所有的数据仓库参与者了解数据仓库的设计,根据矩阵有规划地填充数据表即可。
1.完成数据etl,
需要注意什么?
传入ods层的数据最好确保数据的原汁原味,不建议做过多的数据清理工作,不然会搞的dwd和ods混为一层,从整体设计上不妥,增加数据追查难度,所以原封不动地接入原始数据即可,至于数据的去噪、去重、异常值处理等过程可以放在后面的DWD层来做。
2.完成ods层到dwd层数据处理
该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
3.完成dwd层到dwm层
该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。
直观来讲,就是对通用的核心维度进行聚合操作,算出相应的统计指标。
4.完成dwm层到dws层
按照业务划分,如营收、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
为什么要有dwm层?
如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。
下图是别人的层级划分,可参考: