数据仓库-模型设计

构建数据中台的初衷是什么:

  • 缺少可以复用的数据

  • 大家不得不使用原始数据进行清洗、加工和计算指标

  • 大量重复代码的开发对资源的消耗

问题的根源就在于数据模型的无法复用,以及数据开发都是烟囱式的。所以要解决这个问题,就要搞清楚健壮的数据模型该如何设计。

  •  数据引入层(ODS,Operational Data Store,又称数据基础层):将原始数据几乎无处理地存放在数据仓库系统中,结构上与源系统基本保持一致,是数据仓库的数据准备区。这一层的主要职责是将基础数据同步、存储。
  • 维度层(DIM,Dimension):以维度作为建模驱动,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。为了避免在维度模型中冗余关联维度的属性,基于雪花模型构建维度表。

  • 明细数据层(DWD,Data Warehouse Detail):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细事实表。可将某些重要属性字段做适当冗余,也即宽表化处理。

  • 汇总数据层(DWS,Data Warehouse Summary):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。以宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。

  • 数据应用层(ADS,Application Data Store):存放数据产品个性化的统计指标数据。

应该遵循的设计原则:

聚集是指针对原始明细粒度的数据进行汇总。DWS汇总数据层是面向分析对象的主题聚集建模,数据聚集的注意事项如下:

  • 聚集是不跨越事实的。聚集是针对原始星形模型进行的汇总。为获取和查询与原始模型一致的结果,聚集的维度和度量必须与原始模型保持一致,因此聚集是不跨越事实的,所以原子指标只能基于一张事实表定义,但是支持原子指标组合为衍生原子指标。

  • 聚集会带来查询性能的提升,但聚集也会增加ETL维护的难度。当子类目对应的一级类目发生变更时,先前存在的、已经被汇总到聚集表中的数据需要被重新调整。

此外,进行DWS层设计时还需遵循数据公用性原则。数据公用性需要考虑汇总的聚集是否可以提供给第三方使用。我们可以思考基于某个维度的聚集是否经常用于数据分析中,如果答案是肯定的,就有必要把明细数据经过汇总沉淀到聚集表中。

简单的说就是:

  • 主题

  • 宽表

  • 轻度汇总

数据仓库模型设计名词解释:

  • ODS  --- 原始数据层
  • DWD --- 明细数据层
  • DWS --- 轻度汇总层
  • ADS/DM --- 应用层/数据集市层
  • DIM --- 维表

ODS是业务数据进⼊数据中台的第⼀站,是所有数据加⼯的源头,控制住源头,才能从根本上防⽌⼀个重复的数据体系的出现。

对于ODS层表的命名采⽤ODS_业务系统数据库名_业务系统数据库表名⽅式,⽐如ods_warehous_stock,warehous是业务系统数据库名,stock是该库下⾯的表名。

DWD/DWS/ADS/DM的命名规则适合采⽤“[层次][主题][⼦主题][内容描述][分表规则]”的命名⽅式。

对于维表的规范化命名,建议⽤“dim_主题域_描述_分表规则”⽅式。

模型设计完成后,就进⼊模型开发阶段,需要注意的点:

1. 所有任务都必须严格配置任务依赖,如果没有配置任务依赖,会导致前⼀个任务没有正常产出数据的情

况下,后⼀个任务被调度起来,基于错误的数据空跑,浪费资源,同时增加了排查故障的复杂度;

2. 任务中创建的临时表,在任务结束前应该删除,如果不删除,会发现有⼤量的临时表存在,占⽤空间;

3. 任务名称最好跟表名⼀致,⽅便查找和关联;

4. ⽣命周期的管理,对于ODS和DWD,⼀般尽可能保留所有历史数据,对于DWS/ADS/DM需要设置⽣命周期,7〜30天不等;

5. DWD层表宜采⽤压缩的⽅式存储,可⽤lzo压缩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值