数仓数据各层概念

420 阅读4分钟

这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

数仓在建设中在数据处理的流程中一般都会分为多个数据层次。这样可以让我们在数据的处理中,可以更加清晰数据的加工流程,并且分层也将各个层的职责分的很清楚,这样方便项目的管理,以及不同层之间的数据的复用。通过分层可以让数仓的数据治理更加的清晰。本文主要简单介绍下一般数仓的一些数据分词的词汇以及其对应的概念。

ODS层(Operational Data Store)

数据运营层,也有人叫做贴源层,这是数仓最接近数据源中数据的一层。一般就是我们直接同步而来的业务的各个库表的数据,这层我们一般都不处理,保留数据的原样,即使处理也只是做一些简单的数据清洗工作(比如异常字段修正,统一数据格式等)。因为后续可能需要回到源头去追溯数据问题。

ODS数据量一般大,大多数会存在HDFS上,即Hive或者Hbase,Hive居多。

DW层(Data Warehouse)

数据仓库层,这是数据仓库最重要也是我们主要工作的层,ETL的最关键一步的T就是在这里完成的。因为比较重要,处理的流程所以一般都会再次细分为多个步骤,从而也就对应如下的一些层:

DWD(Data Warehouse Detail)

数据明细层,我们上面说过,ODS一般我们不会做清洗工作,因为清洗的工作一般都是放在了DWD层做(但是也有公司会将清洗的数据直接落到ODS,那么其实他们就不需要ODS或者不需要DWD了,当然如果数据源本身就很规范也就不需要DWD了,直接ODS就可以使用!)。DWD基本对照了ODS的数据模型,只是做了清洗的工作,比如数据字典的解析,日期格式的转换,字段的合并,脏数据处理。数据模型基本和ODS没有什么变化,主要工作就是数据的清洗和细化。

DWM(Data WareHouse Middle)

数据中间层,有些公司不会存在这一层,需要看具体的需求场景。该层主要针对DWD层的数据,对数据做轻度的聚合,生成一系列的中间表。这步骤也是为了下面进一步处理数据,相当于预备的先提取出来一些有用的指标数据。避免在后面数据处理中,我们每次用到的时候去重复计算!

DWS(Data WareHouse Servce)

数据服务层,这就是我们通常所说的宽表层了,我们将很多的小表,通过清洗转换,不断的汇总到一个大的表中,将数据表打宽。这个宽表一定是为了满足一个业务的需求的,带有很强的主题性。基本的工作就是按照各个需求需要的业务主题,将各个小表进行汇总层满足需求的一个大表。

DW层的数据存储,一般和 ODS 一起,但是可能场景的需要,会有存放其他的存储引擎里面。

DWT(Data WareHouse Topic)

DWT是在DWS基础上,再对数据进行累积汇总。一行信息代表一个主题对象的累积行为,例如一个用户从注册开始至今下了多少单。

ADS层(Application Data Store)

这一层其实是大数据加工完的数据,需要反馈给业务了。一般就是我们加工好的数据,推送到业务的MySQL,ES等库中,提业务来使用。或者是一些聚合的指标。最典型的如BI的数据指标。

维表层:DIM(Dimension)

另外补充一个维表层,这一层其实也很重要。主要各层公用的维度数据。

  • 高基数维度数据:一般是用户资料表、商品资料表类似的资料表。
  • 低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。