数仓建模理论-最全

本文介绍了数据仓库的概念、分层结构、OLTP与OLAP模型的区别,探讨了数仓建模的关键要素和方法,包括ER模型、维度模型、DataVault和Anchor模型,以及MOLAP系统的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数仓概述

数据仓库是一个面向主题的、集成的、非易失的、随时间变化的数据集合。重要用于组织积累的历史数据,并且使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。

面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。

集成的:原始数据来源于不同的数据源,要整合成最终数据,需要经过 ETL(抽取、清洗、转换)的过程。

非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。

时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化。

二、数仓分层

  • 原始数据层(ODS,Operation Data Store):数据与原业务数据保持一致,可以通过增加字段(更新时间、数据来源等)方式对数据整理,业务系统对历史数据完成修改后,在字段中进行标识,而不覆盖元数据。数据采用压缩减少磁盘存储空间,并通常创建分区以防后续全表扫描。
  • 明细数据层(DWD,Data Warehouse Detail):数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域),满足3NF,一般采用星型模型,但随着业务数据及数仓的发展一般呈现为星座模型。
  • 数据汇总层(DWS,Data Warehouse Summary):对DWD层的数据,按照主题进行计算汇总,存放的是便于分析的宽表,通常为反范式设计
  • 数据应用层(ADS,Application Data Store):数据应用层也被称为数据集市,存储数据分析结果

数仓为什么分层

  • 隔离原始数据:不论是数据异常还是数据的敏感性,使真实数据与统计数据解耦开
  • 把复杂问题简单化:将复杂任务分解多层,每层处理简单的任务,方便定位各位问题
  • 减少重复开发:规范数据分层,通过中间层数据,能够减少大量重复计算,增加一次计算结果的复用性

三、模型分类

OLTP(在线事务处理)系统中,主要操作是随机读写,为了保证数据一致性、减少冗余、常使用关系模型,满足第三范式。

OLAP(在线联机分析)系统中,主要操作是复杂的分析查询;关注数据整合,以及分析、处理性能。

  • ROLAP(关系型 OLAP,Relation OLAP):使用关系模型构建,存储系统一般为 RDBMS

  • MOLAP(多维性 OLAP,Multidimensional OLAP):预先聚合计算,使用多维数组的形式保存数据结果,加快查询分析时间

  • HOLAP(混合架构的 OLAP,Hybrid OLAP):两者的集成,如底层是关系模型,高层是多为矩阵型;查询效率高于 ROLAP,低于 MOLAP

什么是建模

数仓建模的本质是通过模型完成对复杂业务的抽象,清晰准确完整的刻画业务场景,以便用户通过业务视角便捷的获取所需数据,完成对业务活动的度量。

从上面这句话,我们可以得出建模的四要素:一个过程(抽象)和三个目标(清晰、准确、完整)。

抽象:是指从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。通过抽象我们可以屏蔽繁琐的底层细节,聚焦业务本质,同时提升模型的稳定性,减少业务系统变更带来的冲击。

清晰:清晰是指模型信息必须是清楚、明了有条理的;通过抽象,我们可以将繁杂无章的数据进行归纳总结,以结构化的方式清晰的描述业务。

准确:准确是指模型表达的语义和用户理解的语义是一致的;通过理清业务关系,明确统一业务概念,就可以对业务活动进行准确的描述。

完整:完整是指业务信息必须是完整的,没有信息丢失的;信息丢失会造成业务描述的不完整,最终导致无法满足业务诉求。

建模的好处
  • 访问性能:能够快速查询所需的数据,减少数据I/O。
  • 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数 据系统中的存储成本和计算成本。
  • 使用效率:改善用户应用体验,提高使用数据的效率。
  • 数据质量:改善数据统计口径的不一致性,减少数据计算错误 的可能性,提供高质量的、一致的数据访问平台。

四、建模方法

ROLAP系统建模:ER 模型、维度模型、Data Value、Anchor
1、ER模型(范式建模(3NF)):通常数仓底层ODS、DWD多采用ER模型设计,本质是将事务抽象为实体属性关系

特点:出发点是整合数据,为数据分析决策提供服务;需要全面了解业务和数据;实施周期长;对建模人员能力要求高

建模步骤:
  • 抽象出实体(用户、商品)
  • 梳理实体间关系(用户、商品)
  • 梳理实体的属性(用户:名称,性别,学历等)
  • 画出ER图
2、维度建模(星星模型、雪花模型、星座模型):面向分析,将数仓中的表划分为事实表、维度表两种。

特点:为分析需求服务,更快完成需求分析;具有较大规模复杂查询的响应性能;最流行的数仓建模方法

  • 事实表(事务事实表、周期快照事实表、累计快照事实表):伴随实体间操作事件的发生,会产生可度量的值,这个过程就产生了一个事实表,存储每一个可度量的事件。
  • 维度表:业务过程的发生或者分析角度(实体的描述属性)
建模步骤:

业务建模=》逻辑建模=》物理建模

1、业务建模

梳理业务流程、业务概念统一、收集业务指标

梳理业务流程:

输入:(1)阅读BRD/MRD/PRD、技术方案、ER模型文档深入了解业务背景知识、各个系统的数据存储关系。(2)对相关业务人员进行调研,了解业务操作和日常工作,收集业务对数据的诉求,收集存量的报表。

输出:(1)业务流程图;(2)业务知识文档;(3)特殊业务场景和坑点;(4)业务指标定义。

业务建模-划分主题

为什么划分主题?(1)明确主题边界,确认主题建设范围,分而治之,达成共识。(2)便于用户从较高层次理解使用数仓,提升检索数据效率。(3)数据仓库管理的基础。

如何划分主题?(1)按主业务流程进行划分(2)对支撑业务流程按参与主体划分(3)按分析的视角划分

2、逻辑建模

梳理总线矩阵、划分业务过程、确定粒度/维度/事实/维度表/事实表设计

①构建总线矩阵

行:代表公司组织的一个业务过程

列:业务过程的维度

②维度表设计:省略。

③事实表设计

  • 选择业务过程
  • 声明粒度
  • 确定维度
  • 确定事实
3、物理建模

定义物理模型、存储方式。

确定表名称/表文件格式/字段名称/字段类型及存储路径等

确定分区方式,一级分区/双分区/多级分区,分区字段的选择(时间年月日、业务字段)

确定数据初始范围

3、Data Vault模型

特点:ER模型的衍生;强调数据的历史性、可追溯性、原子性;弱化一致性处理和整合;引入范式,应对源系统的扩展性

  • 中心表-Hub :唯一业务键的列表,唯一标识企业实际业务,企业的业务主体集合。
  • 链接表-Link:表示中心表之间的关系,通过链接表串联整个企业的业务关联关系。
  • 卫星表- Satellite:历史的描述性数据,数据仓库中数据的真正载体
4、Anchor模型(K:V建模)

特点:Data Vault模型的衍生;初衷为涉及一个高度扩展的模型;会带来较多的join操作

Anchor是对Data Vault模型做了更近一步的规范会处理,初衷是为了 设计高度可扩展的模型,核心思想是所有的扩张只添加而不修改,于 是设计出的模型基本变成了k-v结构的模型,模型范式达到了6NF。
由于过度规范化,使用中牵涉到太多的join操作,目前木有实际案例,仅作了解。

MOLAP系统建模

MOLAP 将数据进行预结算,并将数据结构存储到 CUBE 模型(数据立方体)中。MOLAP 产品:Kylin、Druid

MOLAP 对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值