文章目录

  • 一、前言
  • 二、什么是维度建模
  • 三、维度建模的基本要素
    • 3.1 事实表
    • 3.2 维度表

一、前言

学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralph Kimball。

Inmon和Kimball两种DW架构支撑了数据仓库以及商业智能近二十年的发展,其中Inmon主张自上而下的架构,不同的OLTP数据集中到面向主题、集成的、不易失的和时间变化的结构中,用于以后的分析;且数据可以通过下钻到最细层,或者上卷到汇总层;数据集市应该是数据仓库的子集;每个数据集市是针对独立部门特殊设计的。

而Kimball正好与Inmon相反,Kimball架构是一种自下而上的架构,它认为数据仓库是一系列数据集市的集合。企业可以通过一系列维数相同的数据集市递增地构建数据仓库,通过使用一致的维度,能够共同看到不同数据集市中的信息,这表示它们拥有公共定义的元素。

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


星型模型

雪花模型

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

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

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

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

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

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

二、什么是维度建模

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

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

三、维度建模的基本要素

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

3.1 事实表

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


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

3.2 维度表

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

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


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

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

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

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

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

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


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

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

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

数据仓库系列(一)什么是维度建模以及维度建模的基本要素相关推荐

  1. 数据仓库系列之维度建模

    上一篇文章我已经简单介绍了数据分析中为啥要建立数据仓库,从本周开始我们开始一起学习数据仓库.学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权威专家Ralp ...

  2. 数据仓库系列(二)哲学建模的艺术:如何完成数仓的维度建模设计??--做好宏观角度考虑维度一致性

    写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿.这名字是来自world order乐队的一首HAVE A NICE DAY.如今,走到现在很多坎坷和不顺,如今终于 ...

  3. 数据仓库系列——3.维度建模概述及案例

    概述 数据仓库包含的内容很多,它可以包括架构.建模和方法论.对应到具体工作中的话,它可以包含下面的这些内容: 以Hadoop.Spark.Hive等组建为中心的数据架构体系. 各种数据建模方法,如维度 ...

  4. 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模

    常见的有 范式建模法.维度建模法.实体建模法等,每种方法从本质上将是从不同的角度看待业务中的问题,不管是从技术层面还是从业务层面,都代表了哲学上的一种世界观. 1 范式建模法(Third Normal ...

  5. 数据仓库知识点总结(数仓分层建模、维度建模等)

    数据仓库知识点总结 推荐学习<华为数据之道><数据仓库工具箱-维度建模权威指南>两本书. 此文档是数据仓库建模的知识点总结文档,在持续更新中(2021-10-13). 文章目录 ...

  6. 数据仓库建模篇-维度剑魔

    目录 定义 基本要素 维度表 常见的维度表 事实表 什么是事实表? 如何构建事实表? 常见事实表类型? 两种模式 星型模型 雪花模型 总结 实施维度建模 数据矩阵 维度 粒度 事实 总结 定义 上回聊 ...

  7. 数据仓库2_数据建模_维度建模

    目录 0 参考列表 1 维度建模 1.1 多维体系结构 1.1.1 总线矩阵(业务矩阵) 1.1.2 一致性维度 1.1.3 一致性事实 1.2 建模模式 1.2.1 星型模式 1.2.2 雪花模式 ...

  8. 数据仓库系列2-数据仓库建模介绍

    文章目录 一.建模理论 1.1 ER实体模型 1.2 维度建模 1.2.1 事实表 1.2.2 维度表 1.3 Data Vault模型 1.4 Anchor 二. 四种基本建模方法对比 三. 维度建 ...

  9. 数据仓库系列--维度表技术

    维度表技术常见:增加列,维度子集,角色扮演维度,层次维度,退化维度,杂项维度,维度合并,分段维度等基本维度表技术. 一.增加列 事实表和维度表上增加列. Hive上增加列,慎用alter table. ...

最新文章

  1. 趋势|40个统计数据展示CPaaS的2021现状
  2. 曲线绕x轴旋转曲面方程_空间曲线绕空间直线旋转生成的旋转曲面方程
  3. 将json数据写入html表单,将json数据提交到html表中
  4. PAT_B_1054_Java(20分)
  5. c语言编写的每个函数都可以进行独立的编译,2017年辽宁师范大学计算机与信息技术学院836C语言程序设计考研冲刺密押题...
  6. vivado中交织模块_搞定Markdown中的图片,一劳永逸的方法!
  7. Flutter Plugin开发流程
  8. (19)脚手架工具Yeoman
  9. SpringBoot入门第一个简单示例
  10. 冒泡排序(一分钟懂)
  11. WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案
  12. 软件工程自学笔记一(基础篇)
  13. opencv中cvtcolor()函数
  14. OpenSSL密码库算法笔记——第 3.2.2章 利用Barrett约化实现
  15. android 备份取证,【Android】微信降版本备份详解
  16. 储存profiles是什么意思_profiler,profile在计算机中是什么意思
  17. SLAM:一:产品经理眼中的SLAM技术学习路径
  18. Pubwin EP 正式版完整安装全程-数据备份
  19. 2021.12.26 第一章. 计算机组成与体系结构
  20. Android 内核源码编译记录

热门文章

  1. python期末大作业之实现多线程爬虫系统
  2. 微信小程序输入框input
  3. 【地理信息系统GIS专业的10个发展方向:】
  4. STM32F103ZET6---【硬件篇】ADC
  5. 装箱问题c语言函数,C语言基于贪心算法解决装箱问题的方法
  6. 智能硬件产品系列 之 MTK6580方案篇(一)硬件选型
  7. 数据分析课设(SPSS,EVIEWS,R)【理论】
  8. DoIP的基本信息(一)
  9. 开发到底要不要转行软件测试?一篇足以 最全方位分析
  10. 程序员长见识需要关注的牛人