数仓分层的概念

由于我们做数据分析,大体上在数仓中都是迭代的计算,这种计算就会分层次来进行。

这种迭代,通用可以分为3个层级:

  • ODS
  • DW
  • ADS

ODS层

Original data service

原始数据层

记录的是输入数据仓库数据的原始的样子或者经过少量的修改的样子

基本上是和来源的地方一致

作用:一种数据备份,数据溯源(迭代计算的起点)

DW层

Data Warehouse

数据仓库层

在这个层级内就开始进行数据的迭代计算了,在这里会经过一步步的迭代最终得到我们想要的中间数据

DW层的内部详细划分

DW层一般也会在内部详细划分出几个小层级

  • 明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
  • 中间层DWM(Data WareHouse Middle):存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。
  • 业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,应用层的数据通常来源与此层,为什么叫宽表,主要是为了应用层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。

DWD 明细层:存储的数据粒度和ODS基本差不多,但是DWD的数据是从ODS经过清洗、转换、过滤后得到的。
也就是和ODS是很像的,但是里面的数据很规整,没有垃圾数据,没有无效数据,数据的格式都经过了统一化处理

清洗:清除无效数据,比如NULL值,主键ID不存在的,数据超出范围的。

统一格式:时间统一成YYYY-mm-dd HH:mm:ss 这种格式,小数点统一为2位等等做格式上的统一

DWM中间层:进行维度的预聚合,预聚合指的是在通用的范围上进行聚合

比如,时间维度的聚合

DWS 业务层:针对业务主题完成数据聚合计算

很多时候,业务如果数据比较好,可以跳过DWM直接做DWS都是可以的。

有的时候,DWD也可以不要,需要ODS数据质量本身就很好的情况下。

ADS

Application data service

数据结果层

存储数据的计算结果,就是可以直接拿取用的,无需在执行计算的数据。

其实这3个层级,本质上就是:

  • 输入(ODS原始数据存储)
  • 处理(DW 数据迭代计算)
  • 输出 (ADS存储分析的结果)

分层总结

不管怎么分层,总体上就是:

  • 输入(ODS)
  • 处理(清洗、预聚合、针对性分析)
  • 输出(ADS)

在企业中,分层是很乱的,有的企业多达7 8 层,有的企业可能就2层

大体上,离不开:输入、处理、输出