1.维度建模技术背景

在基于Hadoop的数据仓库(如Hive),或基于传统MPP架构的数据仓库(如Teradata),抑或是基于传统关系型数据库的数据仓库,都会面临一系列问题:
  • 如何设计数据仓库中的数据存放?
  • 如何设计才能使得数据的使用最为简便?
  • 如何设计才能使数据仓库有良好的可扩展性和可维护性?
在数据仓库建模里面中,有两大派:
  • Bill Inmon范式: 数据仓库是一个整体的商业智能系统的一部分。 一家企业只有一个数据仓库,数据集市的信息来源出自数据仓库。在数据仓库中,信息存储 符合第三范式
  • Ralph Kimball范式:数据仓库是企业内所有数据集市的集合,信息总是被存储 在多维模型当中。
很明显, Bill Inmon范式更规范化,使用起来更简便,但是忽略了数据仓库的可扩展性和可维护性。而Ralph Kimball范式站在大数据角度,考虑未来数据仓库的发展战略。因此,维度建模技术将以Ralph Kimball范式展开。
2.维度建模核心概念

(1)度量和环境
度量:对业务过程进行度量,如公司当月销售额如何,官网访问情况如何?
环境:直接度量业务过程数值很难理解其中的意义,如公司销售额是上月多还是当月多,官网访问量为多少才算好。因此环境可以理解为上下文的意思。
(2)事实和维度
    在kimball范式中,度量称为事实,上下文和环境称为维度。一般,事实以数值表现,而且被大量文本形式的上下文包围。这些文本上下文描述了事实的"5个W" 维度信息(When、Where、What、Who、Why)。
例如需求为:"按照一级类目,统计本店上月的销售额情况"。这里"一级类目"为一个维度,"上月"为另一个维度,而销售是 事实
(3)事实表
它包含了最底层、最原子性的细节,提高了灵活性。 简单理解,就是超市结账时的小票,上面详细记录了所有交易记录、商品信息等
事实表根据XX粒度可划分为:事实事实表、周期快照表和累积快照事务表。
  • 事务事实表:用于承载事务数据,通常粒度比较低(细节很多),例如产品交易事务事实、ATM交易事务事实。
  • 周期快照事实表:记录有规律、固定时间间隔的业务累积数据,粒度比较大,例如账户月平均余额事实表。
  • 累积快照事实表:记录具有时间跨度的业务处理过程信息,例如产品从上线到淘汰事务事实。
(4)维度表
维度可以理解为属性,通常一张表可能有数十或上百列属性。属性时查询约束条件(where)、分组(group)等基本元素。而属性尽可能体现出文字意义,而不是一些简单地符号编码。
有时设计数据库时,不能从字段(如数字型)中分析是事实还是维度。通常,如果字段有许多取值并参与运算的度量值则看出事实、如果字段变换不多并作为离散取值描述则看成维度属性。
(5)星型架构和雪花架构
维度建模存在两种组合事实表和维度表的基本架构: 星型和雪花
  • 星型架构所有维度表直接连接到事实表。非规范化结构,存储有冗余,例如在商品的维度表中,其品牌信息每一行都存在,包括品牌ID,名称、拥有者。但很多商品品牌一样,导致重复存储了很多次存在冗余。
  • 雪花架构: 不是 所有维度表直接都连接到事实表,而是通过其他维度表连接到事实表中。例如存储商品表中,每一行仅存储品牌ID,而品牌的所有其他信息(包括品牌名称、拥有者、注册地等)都存储在单独的品牌维度表中。通过品牌ID外键,商品表可以间接获取到所有品牌详细信息。 这样虽然可以节省存储空间,但下游用户分析品牌销售额时,必须先用订单表关联商品表,然后用商品表再关联品牌表
因此,星型架构类似于所有信息放在表一行中,无需额外关联表。 这会造成空间浪费,但效率高和查询方便。雪花结构相反,因为表连接操作通常需要进行大量优化操作才能提高查询效率。所以, 数据仓库一般采用星型架构,关系型数据库采用雪花架构
3.维度建模常见过程

一般采用4步进行设计,即业务过程、定义粒度、确定维度和确定事实。
(1)选取业务过程
这个就是产品经理的活了,就不多说了...
(2)定义粒度
即事实表事实细节所达到的程度。本质就是如何描述事实表的单行信息。常见例如:
  • 收费小票上的每一个子项
  • 银行账户的每一次存款记录
(3)确定维度
确定了粒度之后,那么我们可以继续从维度角度出发。例如订单表中,常见维度包括商品、日期、卖家、买家、门店等。每一个维度可以包含大量描述性信息,如商品维度表会包含商品名称、标签价、商品品牌、商品类目、商品上线时间。
(4)确定事实
现在需要确定事实和度量,比如超时的订单活动,相关的度量为销售数量和销售金额。

维度建模技术(1)核心概念相关推荐

  1. Kimball 维度建模技术 (1)

    Kimball 维度建模技术(1) 1 事实表技术基础 1.1 事实表结构 发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中. 从最低的粒度级别来看,事实表行对应一个度量事件. 因此 ...

  2. 数据仓库Kimball维度建模技术精华

    一.什么是事实表 1.1事实表概念 事实表用来表示业务度量,事实表的每行代表一个度量事件.例如商品订单表的一行,代表单个用户下单的一个状态. 1.2.行设计原则 第一原则:每行中的数据是一个特定级别的 ...

  3. 区块链技术入门——核心概念与原理

    区块链的前世今生 密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛. 比特币的底层技术: 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域. 将这些技术提炼出来,就提出了区块 ...

  4. 【RPA】 RPA技术的核心概念及其应用范围——如何让公司的核心业务流程自动化,以及如何把RPA真正落地到企业中?

    文章目录 1.前言 2.基本概念术语说明 2.1什么是RPA? 2.2 为什么要用RPA? 2.3 RPA的核心特征 2.3.1 全自动化 2.3.2 可编程 2.3.3 高效率 2.3.4 数据交换 ...

  5. 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理

    区块链的过去与未来 密码朋克( Cypherpunk ) 维基解密的创始人阿桑奇 BT下载的作者的布莱姆-科恩 WWW的发明者蒂姆伯纳斯-李 区块链前世今生 戴伟发明了B-money,强调点对点交易和 ...

  6. 大数据之维度建模中的重要概念

  7. 维度建模——维度建模与数据仓库概述

    分类目录:商业智能<维度建模>总目录 数据仓库和商业智能(Data Warehousing and Business Intelligence,DW/BI)行业渐趋成熟.尽管初期仅有部分大 ...

  8. 数仓建模(维度建模)

    目录 一.什么是建模?(为什么建模) 二.模型的好处 三.建模的方法 四.维度建模 4.1 基本概念 4.2 为啥选择维度建模(优缺点) 4.2.1 优点 4.2.2 缺点 4.3 维度建模-星型模型 ...

  9. 数仓(二)关系建模和维度建模

    上一篇我们了解了OLTP和OLAP数据处理类型.OLTP处理的是关系模型表即实体-关系表ER,而OLAP处理的是维度模型表. 数仓(一)简介数仓,OLTP和OLAP 本篇我们来讨论一下数仓中两种建模的 ...

最新文章

  1. 一个逻辑清晰的购物车模型
  2. WPF Layout System
  3. 扩展资源服务器解决oauth2 性能瓶颈
  4. 【S操作】简单粗暴自动化免费文档存储备份方案
  5. 第五章 Python数据结构
  6. 我很高兴地宣布我正在编写第一本官方ABP图书
  7. 小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
  8. java.io.StreamCorruptedException: invalid type code: AC错误的解决方法
  9. python翻译-50 行代码,实现中英文翻译
  10. apa引用要在文中吗_英文论文格式要求玩转APA
  11. 年薪百万的市场人都在读哪些书?
  12. C语言求23阶行列式,AX=0通解,施密特正交化
  13. Linux下安装Oracle12c图形化及静默两种方法安装操作手册
  14. Device Tree(七)NAND FLASH
  15. 当面试问到自己有哪些缺点应该怎么回答
  16. 星瀚资本杨歌,慧聪集团姚永超,腾飞资本任溶 | TO B创业过冬策略,开源节流...
  17. C语言公制长度转英制长度,英制换算(英制长度转换公制长度换算)
  18. Python基础之算数运算符
  19. Spring Cloud教程(十二)加密和解密
  20. IDA Linux远程调试

热门文章

  1. Dad34 Java对象的内存形式
  2. Android Handle用法
  3. 【Simulink】Three-Phase V-I Measurement 使用方法
  4. [c语言]倒置字符串 -牛客网
  5. linux的标准输入输出
  6. 建网站常用HTML代码
  7. [架构之路-177]-《软考-系统分析师》-17-嵌入式系统分析与设计 -2- 系统分析与设计、低功耗设计
  8. mysql 5.6 rpm 下载_mysql5.6 rpm包下载
  9. java中上传本地图片
  10. C语言 指针的解引用详解