数据模型,可以说是数据仓库的基石,承载着数据存储的重要职能。

    在之前的文章,我们分享过数仓建模的上篇和下篇。

    • 上篇,我们主要介绍数据建模理论,介绍了数据模型的概念、作用、高质量建模的重大意义,通用的数据建模流程,数据存储技术发展的三个阶段,几种数据建模方法。当然,如何评判模型的质量呢,有哪些量化指标呢?
    • 下篇,我们先分别介绍了实际的数仓建设过程和业内对于数仓建设方法的探索演进过程,最后有详细介绍了实际项目中的数仓建模流程和方法,具体每一步需要做什么,以及数仓每一层具体的注意点都有介绍。

    对于每一层的作用,我们可以再来回忆一下。

    • ODS 层,不需要建模完全沿用源端表结构,然后添加些必要的 ETL 标记字段,比如同步时间、大数据场景下的时间分区(比如日全量抽取,加载时候需要把抽取到的全量数据放到一个新的日分区里,不能覆盖之前的全量数据)。少部分对失效性要求高的短期实时或近实时数据可以从这里出,除此之外 ODS 不对外开放。

    • DWD 层,需要做数据的清洗、转化、多源数据的打通和融合,主要根据业务流程或数据分类建模,需要把现在用到的和以后有可能用到的数据全都存下来,保证所有的明细数据查询都能从这一层出。

    • DWS 层,可以按照业务需求,对 DWD 的数据做汇总,理论上大部分的需求(明细数据查询除外)都能层 DWS 层或者更上层的模型中出。如果有主题宽表的场景,也可以放到这一层。

    • APP 层或着 DM 层,完全面向最终业务需求或者分析主题,逻辑上可以建多个数据集市,数据集市间互不依赖,分别服务于不同的业务或者部门。模型设计时候 DWS 有的就直接使用,DWS 没有的或者需要做加工的才在这一层创建。查询的时候基本都是单表查询,最多再关联下维度表。

    当然,模型设计时候还需要考虑 ETL 实现逻辑,比如根据 ETL 的抽取和加载策略,我们如何设计表分区。对于增量、变化量、全量数据的加载,我们是不能覆盖掉前一次数据的。

    本篇,我们主要想补充下,维度表和事实表各自的设计方法。

    维度表设计

    事实表设计