数据仓库:我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序
清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算 统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题
一 角色划分
二 角色细分
零、数据加载层:ETL Extract-Transform-Load
一、数据运营层:ODS Operational Data Store 经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的
二、数据仓库层:DW :Data Warehouse
三、数据应用层:App Application 在这里,主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、PostgreSql、Redis等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。
四、维度层: Dimension
三 数据分层
DWD: detail 细节数据层:有的也称为ODS 业务层和数据仓库的隔离层 该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性,后文会举例说明
DWB: base 基础数据层:存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层 DWM数据中间层 该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工
DWS: service 数据服务层:基于DWB上的基础数据、整合汇总某一个主题
又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可