数据仓库系列之维度建模

上一篇文章我已经简单介绍了数据分析中为啥要建立数据仓库,从本周开始我们开始一起学习数据仓库。学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralph Kimball。Inmon和Kimball两种DW架构支撑了数据仓库以及商业智能近二十年的发展,其中Inmon主张自上而下的架构,不同的OLTP数据集中到面向主题、集成的、不易失的和时间变化的结构中,用于以后的分析;且数据可以通过下钻到最细层,或者上卷到汇总层;数据集市应该是数据仓库的子集;每个数据集市是针对独立部门特殊设计的。而Kimball正好与Inmon相反,Kimball架构是一种自下而上的架构,它认为数据仓库是一系列数据集市的集合。企业可以通过一系列维数相同的数据集市递增地构建数据仓库,通过使用一致的维度,能够共同看到不同数据集市中的信息,这表示它们拥有公共定义的元素。

这里我主要介绍维度建模方法。这一方法是Kimball最先提出的,其最简单的描述就是按照事实表、维度表来构建数据仓库、数据集市。在维度建模方法体系中,维度是描述事实的角度,如日期、客户、供应商等,事实是要度量的指标,如客户数、销售额等。按照一般书籍的介绍,维度建模还会分为星型模型、雪花模型等,各有优缺点,但很少直接回答一个问题,也就是数据仓库为什么要采用维度建模?

星型模型

雪花模型

数据仓库包含的内容很多,它可以包括架构、建模和方法论。对应到具体工作中的话,它可以包含下面的这些内容:

1、数据架构体系:以Hadoop、Spark等组建为中心的数据架构体系。

2、各种数据建模方法:如维度建模、范式建模法、实体建模法。

3、辅助系统:调度系统、元数据系统、ETL系统、可视化系统这类辅助系统。

我们暂且不管数据仓库的范围到底有多大,在数据仓库体系中,数据模型的核心地位是不可替代的。因此,下面的将详细地阐述数据建模中的典型代表:维度建模,对它的的相关理论以及实际使用做深入的分析。

为了能更真切地理解什么是维度建模,我将在后续的文章中模拟一个大家都十分熟悉的电商场景,运用讲到的理论进行建模。理论和现实的工作场景毕竟会有所差距,这一块,我会分享一下企业在实际的应用中所做出的取舍。接下来具体来了解维度建模

一、什么是维度建模

维度模型是数据仓库领域大师Ralph Kimball 所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

我们换一种方式来解释什么是维度建模。学过数据库的童鞋应该都知道星型模型,星型模型就是我们一种典型的维度模型。我们在进行维度建模的时候会建一张事实表,这个事实表就是星型模型的中心,然后会有一堆维度表,这些维度表就是向外发散的星星。那么什么是事实表、什么又是维度表,下面会专门来解释。

星型模型

二、维度建模的基本要素

维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。

1. 事实表

发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。不太理解举个例子。比如一次购买行为我们就可以理解为是一个事实,大家看一下星星模型示例。

图中的订单表(ICstockbill)就是一个事实表,你可以理解他就是在现实中发生的一次操作型事件,我们每完成一个订单,就会在订单中增加一条记录。我们可以回过头再看一下事实表的特征,在事实表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。

 2. 维度表

每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。 维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。图中的customer(客户表)、goods(商品表)、d_time(时间表)这些都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。

最后说一下维度模型的优缺点:

1、数据冗余小(因为很多具体的信息都存在相应的维度表中了,比如客户信息就只有一份)

2、结构清晰(表结构一目了然)

3、便于做OLAP分析(数据分析用起来会很方便)

4、增加使用成本,比如查询时要关联多张表

5、数据不一致,比如用户发起购买行为的时候的数据,和我们维度表里面存放的数据不一致

再说没有数据仓库的宽事实表的优缺点:

1、业务直观,在做业务的时候,这种表特别方便,直接能对到业务中。

2、使用方便,写sql的时候很方便。

3、数据冗余巨大,真的很大,在几亿的用户规模下,他的订单行为会很恐怖、粒度僵硬,什么都写死了,这张表的可复用性太低。

数据仓库的建模方法有很多种,我目前主要学习了解的维度建模方法。开始尝试写数据仓库系列文章,文中如有错误或误导的地方欢迎大家指出纠正。 希望这篇文章能够给大家带来帮助,最后感谢大家的阅读。欢迎大家一起加入高效数据处理ETL交流群,一起讨论数据分析前ETL过程的问题,一起学习一起成长。

扫码加群:

原文地址:https://www.cnblogs.com/fly-bird/p/11336261.html

时间: 2024-10-27 10:11:52

数据仓库系列之维度建模的相关文章

搭建数据仓库第06篇:逻辑建模–3–维度建模核心之总线架构

目录 前言 维度建模 星型模型 小结 前言 维度建模是Kimball提出来的经典的数据仓库建模思想.维度建模提倡针对某一主题,通过建设维度和事实来快速建设数据仓库.与维度建模相对应的自然是Inmon的范式建模.在上篇也提到范式建模非常适合应用于中间明细层的建设,那么在DW/DM层为什么选择使用维度建模呢?这是第一个问题.维度建模的核心是总线架构,一致性维度,一致性事实.本篇的主题是总线架构,那为什么说维度模型是总线式架构?本篇通过维度建模和星型模型的讲解来分别解释这两个问题. 维度建模 维度模型

数据仓库专题(22):总线架构和维度建模优势-杂项

一.总线架构 维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”.总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact). 在多维体系结构(MD) 的数据仓库架构中,主导思想是分步建立数据仓库,由数据集市组合成企业的数据仓库.但是,在建立第一个数据集市前,架构师首先要做的就是设计出在整个企业 内具有统一解释的标准化的维度和事实,即一致

维度建模的基本概念及过程

摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识:其次,介绍设计维度模型的4个基本步骤:再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构.一致性维度.一致性事实. 关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实. 0 引言 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语.术语“维度”与“事实”,最初是20世纪60年代在一个由General Mil

数据仓库系列-为什么要维度建模

凡是建设数据仓库,一定会提到维度建模方法.这一方法是Kimball最先提出的,其最简单的描述就是,按照事实表.维度表来构建数据仓库.数据集市.在维度建模方法体系中,维度是描述事实的角度,如日期.商品.地址等,事实是要度量的指标,如用户数.销售额等.按照一般书籍的介绍,维度建模还会分为星型模型.雪花模型等,各有优缺点,但很少直接回答一个问题,也就是数据仓库为什么要采用维度建模? 这个问题的基本判断在于,数据是否要开放给业务人员使用?采用维度建模构建出来的数据库结构表更加符合普通人的直觉.易于被普通

数据仓库专题(2)-Kimball维度建模四步骤

一.前言 四步过程维度建模由Kimball提出,可以做为业务梳理.数据梳理后进行多维数据模型设计的指导流程,但是不能作为数据仓库系统建设的指导流程.本文就相关流程及核心问题进行解读. 二.数据仓库建设流程 以下流程是根据业务系统.组织结构.团队结构现状设定的数据仓库系统建设流程,适合系统结构复杂,团队协作复杂,人员结构复杂的情况,并且数据仓库建设团队和业务系统建设团队不同的情况.具体流程如下图所示: 图1 数据仓库系统建设流程 三.四步维度建模 Kimball四步建模流程适合上述数据仓库系统建设

数据仓库系列 - 缓慢渐变维度

在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要. 很显然在业务数据库中数据的变化是非常自然和正常的,比如顾客的联系方式,手机号码等信息可能随着顾客的所在地的更改发生变化,比如商品的价格在不同时期有上涨和下降的变化.那么在业务数据库中,

数据仓库的两种建模方法

范式建模 Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构.操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层.优势:易于维护,高度集成:劣势:结构死板,部署周期较长 范式建模应用在EDW层 一个符合第三范式的关系必须具有以下三个条件:1. 每个属性的值唯一,不具有多义性;2. 每个非主属性必须完全依赖于整个主键,而非主

为什么要维度建模

凡是建设数据仓库,一定会提到维度建模方法.这一方法是Kimball最先提出的,其最简单的描述就是,按照事实表.维度表来构建数据仓库.数据集市.在维度建模方法体系中,维度是描述事实的角度,如日期.商品.地址等,事实是要度量的指标,如用户数.销售额等.按照一般书籍的介绍,维度建模还会分为星型模型.雪花模型等,各有优缺点,但很少直接回答一个问题,也就是数据仓库为什么要采用维度建模? 这个问题的基本判断在于,数据是否要开放给业务人员使用?采用维度建模构建出来的数据库结构表更加符合普通人的直觉.易于被普通

维度建模步骤

原 维度建模步骤 2015年05月15日 10:50:00 阅读数:3553 数据模型是指用实体.属性.实体之间的关系对业务概念和逻辑规则进行统一的定义,命名和编码,主要描述企业的信息需求和业务规则,是业务人员和开发人员沟通的语言,是数据仓库架构设计工作开始的第一步.正确的数据模型是用户需求的集中体现,是商业智能项目成功与否最重要的因素之一.数据模型可以分为概念模型.逻辑模型.物理模型,本节进行详细的介绍. 3.6.1  概念模型 从定义上来说,概念模型是最高层次的数据模型,反映了数据仓库的主要