Kimball维度建模基本理论
本文相关基本理论摘录自《数据仓库工具箱–维度建模的完全指南-第二版》和《数据仓库声明周期工具箱》
维度建模介绍
维度建模是一种将数据结构化的逻辑设计方法,将客观世界划分为度量和上下文。机构的每一个业务过程都可以使用维度模型来描述,维度模型由一系列含有数值型度量的事实表组成,而事实表中的数值型度量则被一系列带有文本形式上下文的维度表所环绕。
度量(事实)
由机构的业务过程和支持他们的业务源系统来捕捉的。常以数值形式出现,以此称为“事实”
上下文(维)
就是解释度量中数值的具体含义,上下文是围绕这度量存在的,只有当事实被记录时上下文才为真。上下文被直观的分割成多个独立的逻辑块,我们称为“维”。维度描述了度量上下文的5W(who,what,when,where,why)信息,以及这些上下文是如何作用的。
维度建模的优点
- 可理解性,易于使用
- 查询性能高
- 修改的灵活度高
一、事实表
事实表: 存储了从机构业务活动或者事件中提炼出来的性能度量。术语 “事实” 就是指每种性能度量 ,事实表的一行对应一个度量值,所有度量值必须具有相同的粒度。
(1)事实表粒度都归属于三类:
1. 事务粒度事实表 : 粒度是每一行对应一个事务,事务粒度是空间和时间的焦点,一个事务粒度上的度量必须在那个时刻为真。事务事实表在活动发生时才会插入行。
2. 周期快照事实表:能够按照一个定义良好的时间周期间隔来捕捉业务过程的执行情况,并且将这些描述装载到事实表中。
3. 积累快照事实表:用于描述业务过程(有明确的开端和结尾)中某个不确定时间跨度里的活动。
事务和快照是数据仓库的阴阳两面,事务是展现细节行为最为完整的视图,快照使我们迅速而容易的监视总体执行情况
(2)事实表的字段分类
1. 可加性: 例如 条数,金额等
2. 半可加性 : 表示某一时间点的强度度量,例如: 库存量,账户结余
3. 完全不可加性: 例如: 单位价格,温度等
备注:百分比和比率这类数值都是非加性的,分子与分母都应该存在事实表中。可以利用数据存取工具计算出事实表中任何数据形式的比率,要记住,求取的是合计值的比率而不是比率的求和
二、维度表
(1) 时间维度
每个事实表都是一个观测值的时间序列,事实表总是有一个或者多个日期维。下图显示了一个以天为粒度的标准日期维度表。
(2)退化维
定义: 像订单号,发票号,机票号等这类编号正是设计父-子关系的事务处理系统时所用到的父标题键,不要忽略这些标题编号,而是应当直接添加到事实表中,标题票号可以作为维度键,但是如果像事务日期和客户维那样将标题记录信息分解成独立的维,那么这个维就没有其他属性了。我们称之为退化维。
退化维常常出现在事务事实表的设计过程中,本身就具有一种父-子关系的数据结构
个人理解: 退化维就是没有对应维度表的维度,本质上它是存在于事实表中,并且相应的编码,号码字段没有与之对应的维度表,因为此类维度没有对应的上下文解释。但是,退化维在事实表中普遍存在,并且经常会和其他一些维度组合形成事实表的主键。
例如:在Kimball提出的维度建模中,事实表应该保存最细粒度的数据。所以对于象销售单这样的事实表来说,需要销售单编号和产品来共同作为主键,而不能用销售日期、商场、产品等用来分析的维度共同作为主键。
(3)缓慢变化维
- 类型一: 覆盖维度属性
- 类型二: 添加一个新的维度行
- 类型三: 添加一个新的维度属性
- 类型四: 微型维,添加一个新维,将经常变化的客户属性分解开放到独立的维度表中。原理就是将变化频率比较大的维度拆分出来单独作为维度表处理。
关于SCD的详细介绍参照博客 缓慢变化维(SCD)的处理方法
(4)雪花型和支架
当冗余属性和译码都被转移到单独的表,并且通过人工键连接到原始表时,维就变成了雪花型了。
支架是一个统计属性集合,存在于每个辖区层次,一个辖区的所有客户都共享一个相同的属性集合。
例如:
(4)维度属性应该具有以下特点
- 是冗长的
- 是描述性的
- 是完整性的-没有遗漏值
- 是离散取值的
- 质量是有保证的
(5) 事实表和维度表的判断
一个比较好的经验性法则是看看属性是否是离散取值的,以及是否用过过滤和标记。如果满足这些条件就应当放在维度表中。如果属性有许多值可选,并且可以用于计算,则应该将其放入事实表。
供应链管理: 一个产品的流动过程是从获取原材料到加工称为成品,再到最终交付给客户的整个过程,从原始起点到消费终点的整个流程的管理 唱唱是被称作“供应链管理”
(6) 一致性维度
一致性维度是企业数据仓库的“总线”, 一个强大的基于一致性维度的架构将一组业务过程紧密联系到一起就形成了企业数据仓库。
一致性维度对于企业级的数据仓库极为重要,有以下优点:
- 1 一致性: 每个事实表都使用一致的过滤条件,产生的查询结果集合也被唯一地标识。
- 2 集成: 首先单独查询每个事实表,最后将结果集连接到一个公共的维度属性上
- 3 开发周期短:若一致性维度建立起来,后续的项目开发时间会极大的缩减,不需要重复创建相关的维度表
Kimball维度建模基本理论相关推荐
- Kimball 维度建模理论
一.维度建模分为两种表 事实表 存在这样一些数据,如行为记录,操作记录,订单,日志等,都可以作为事实表 特点:每条数据都有一个唯一键,数据通常来说不会更新,随着时间的增加而增加 维度表 维度表是分析数 ...
- 【Kimball维度建模】+【阿里巴巴中台—OneData实施】
一.Kimball维度建模 1.前生今世 维度建模出自Ralph Kimall的<The DataWarehouse Toolkit-The Complete Guide to Dimenson ...
- (转载)通俗易懂数仓建模—Inmon范式建模与Kimball维度建模
在数据仓库领域,有两位大师,一位是"数据仓库"之父 Bill Inmon,一位是数据仓库权威专家 Ralph Kimball,两位大师每人都有一本经典著作,Inmon大师著作< ...
- 数仓实践:浅谈 Kimball 维度建模
我们不管是基于 Hadoop 的数据仓库(如 Hive ),还是基于传统 MPP 架构的数据仓库(如 Teradata ),抑或是基于传统 Oracle .MySQL .SQL Server 关系型数 ...
- Kimball 维度建模技术 (1)
Kimball 维度建模技术(1) 1 事实表技术基础 1.1 事实表结构 发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中. 从最低的粒度级别来看,事实表行对应一个度量事件. 因此 ...
- Inmon 范式建模与 Kimball 维度建模
一.两种建模思想 对于 Inmon 和 Kimball 两种建模方式可以长篇大论叙述,但理论是很枯燥的,尤其是晦涩难懂的文字,大家读完估计也不会收获太多,所以笔者根据自己的理解用通俗的语言提炼出最核心 ...
- 通俗易懂数仓建模—Inmon范式建模与Kimball维度建模
在数据仓库领域,有两位大师,一位是"数据仓库"之父 Bill Inmon,一位是数据仓库权威专家 Ralph Kimball,两位大师每人都有一本经典著作,Inmon大师著作< ...
- 数据仓库专题(2)-Kimball维度建模四步骤
一.前言 四步过程维度建模由Kimball提出,可以做为业务梳理.数据梳理后进行多维数据模型设计的指导流程,但是不能作为数据仓库系统建设的指导流程.本文就相关流程及核心问题进行解读. 二.数据仓库建设 ...
- Kimball维度建模
维度模型是数据仓库领域大师Ralph Kimball 所倡导,以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,所以它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性 ...
最新文章
- Could not autowire field: private javax.servlet.http.HttpServletRequest
- OpenCV图像处理——深度学习样本制造
- CG CTF WEB 单身二十年
- Scikit-learn数据预处理分类变量编码之多标签二值化
- Java中的推断异常
- 转——C# DataGridView控件 动态添加新行
- python 列表索引位置,python – 在列表中查找值的第一个位置
- linux 进目录输入密码,scp在Linux主机之间复制文件/目录不用输入密码
- python 命令模式_python设计模式(十六):命令模式-阿里云开发者社区
- java动画帧储存路径_Java实现帧动画的实例代码
- 循环中需要调用异步怎么确保执行完再执行其他的_什么是事件循环和异步编程?5种使用async/await更好地编码方式!...
- NB-ioT的工作状态和工作模式
- 喜马拉雅xm格式转化mp3_强大的视频格式转换工具
- 刚入职就写了个bug,把几万用户搞蓝屏了···
- Unity3D中常用的物理学公式
- python ffmpeg剪辑视频_FFmpeg精准时间切割视频文件
- 从Go走进plan9汇编
- Word及Excel文档的Python脚本处理
- 锐龙r97900参数 r9 7900功耗 r9 7900核显性能
- 《锋利的jQuery》读书要点笔记7——制作商城网页:网站脚本
热门文章
- “ 验证码(CAPTCHA)“的演变史
- java 跟据身份证识别性别年龄
- RAII + 接口模式
- RabbitMQ学习(四) 订阅模式-Direct(直连)
- 网络编程0x03 EAGAIN错误和EINTR错误
- php pear pecl
- ASPICE_CL2_01_01_ASPICE_CL2之我见
- JavaScript 学习-48.$.ajaxSetup方法设置AJAX的全局默认设置
- 生化实验技术——蓝白斑筛选
- SpringBoot:解决循环依赖