数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系
数据仓库之建模
- ER建模
- 维度表和事实表
- 维度建模三种模式
- 如何维度建模
- 什么是缓慢变化的维度
- 最常见的三种数据仓库建模体系
- 联机分析处理 OLAP
- 元数据(Metadata)
- 数据仓库建模包含ER建模和关系建模,和维度建模技术
ER建模
- 实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
- **实体:矩形 | 属性:椭圆 | 联系:菱形 4种基数约束 **
- 基数约束
- 一个实体A对应多个实体B
- 一个实体A对应0个或多个实体B
- 一个实体A对应一个实体B
- 一个实体A对应0个或1个实体B
- 复合属性 圆括号 地址属性 包括省份 城市 街道
- 多值属性 双层椭圆 属性有多值,一个职工可能有多个电话号码
- 派生属性 虚线椭圆 从其他属性或者其他数据(如当前日期)派生出来
- 可选属性 属性名后面添加(0)标识分属性可能有也可能没有取值,比如说职工奖金。
- 基数约束上可以加最大最小基数、联系的角色
维度表和事实表
- 1. 维度表 dimension
- 每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键
- 表示对分析主题所属类型的描述。比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。通常来说维度表信息比较固定,且数据量小
- 2. 事实表(fact table)
- 发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件, 反之亦然。
- 表示对分析主题的度量。比如上面那个例子中,200元就是事实信息。事实表包含了与各维度表相关联的外键,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。
- 常考虑两个属性:
- 事物标识码(TID),各种订单号、事物编号,不放入维度表是因为数量级太大每次查询都会耗很多资源来join,将某些逻辑意义上的维度放到事实表里的做法称为退化维度
- 事务时间:数量级大,分布式数据仓库工具会对数据进行分区,默认分区字段为日期
维度建模三种模式
星形模式
- 由一个事实表和一组维表构成,以事实表为核心,维表围绕核心呈星状分布
- 维表只和事实表关联,维表之间没有关联
- 每个维表的主键为单列,且该主键放在事实表中,作为两边连接的外码
雪花模式
- 每个维表可继续向外连接多个子维表
- 雪花模型相当于将星形模式的大维表拆分成小维表,满足规范化设计,再实际中较少
星座模式
- 多对多
- 维度空间内的事实表可能不止一个,一个维表可能被多个事实表用到
- 好处:能够共享维度 和 设置细节/聚集事实表
- 共享维度:公司希望用分析销售主题的方法分析劣质产品,不需要重新建模,只需要加入一个新的劣质产品事实表
- 细节事实表:每条记录表示单一事实,通常设置TID属性,查询灵活但速度慢
- 聚集事实表:每条记录聚合多条事实,无TID属性,速度快但查询功能受到一定限制
- 常见做法同时设置这两种事实表
三种模式对比
- 雪花模式是将星形模式的维表进一步划分,使维表满足规范化设计
- 星座模式允许星形模式中出现多个事实表
如何维度建模
地区 - 商店 - 交易记录 - 顾客 - 产品 - 种类 - 卖主
- 哪些维度对主题分析(这里是销售额)有用
- 产品product、顾客customer、商店store、日期date 对销售额分析有帮助
- 如何使用现有数据生成维表
- 产品维度 可由产品关系、供应商关系和种类关系得到
- 顾客维度 可由顾客关系得到
- 商店维度 可由商店维度和地理维度得到
- 日期维度 可由交易记录的日期列得到
- 用什么指标来度量主题
- 本例的主题是销售,销售和销售额最能反映销售情况
- 如何用现有数据生成事实表
销售和销售额信息可以通过交易记录得到
维表不满足3NF,事实表1NF都不满足,各维表的主键由xxID 变成 xxKey,Key这样的字段被称为代理码(surrogate key),它是一个通过自动分配整数生成的主码,没有任何其他意义。使用它主要是为了能够处理"缓慢变化的维度"
什么是缓慢变化的维度
- 当业务数据库中的一些数据发送了变化,如顾客的联系方式发生改变,应该如何把这些变化也反映到数据仓库中,一些基本信息的更改可能会引起数据归纳和分析出现的问题。在数据仓库中,其数据主要的特征一是静态历史数据,二是少改变不删除,三是定期增长,其作用主要用来数据分析。
- 缓慢渐变类型一 :不记录历史数据,将旧的业务数据覆盖重写
- 缓慢渐变类型二 :保存多条记录,直接新添记录,新增加一个 Key(代理键),配合时间戳 告诉数据仓库 哪个是最新在用的 ,通常是DW表的主键,用来连接业务数据库 和 数据仓库的,
- 代理键的好处:
- 解决这种缓慢渐变维度,维护历史信息记录
- business key可能较长,代理键可以设置为整形,效率高节省体积
- 业务数据库来自不同的系统,可能出现相同的business key,用代理键可以处理/
- 缓慢渐变类型三:添加历史列,用不同的字段保存变化痕迹.它只能保存两次变化记录.适用于变化不超过两次的维度
最常见的三种数据仓库建模体系
- 规范化数据仓库:规范化设计的分析型数据库,首先对ETL得到的数据进行ER建模,关系建模,得到一个规范化的数据库模式。各部门开发人员大都从这些数据集市提数,通常来说不允许直接访问中心数据库。
- 维度建模数据仓库: 使用交错维度进行建模的数据仓库,创建一个大星座模型表示所有分析型数据
- 独立数据集市:公司的各个组织自己创建并完成ETL,自己维护自己的数据集市,信息分散,效率低
- 三种对比
- 规范化数据仓库:需要全局进行规范化建模,前期花费时间大,投入使用慢,后期容易维护
- 维度建模数据仓库:敏捷性强,适用于业务变化频繁的情况,开发要求没那么高
联机分析处理 OLAP
- OLAP需要以大量历史数据为基础,再配合上时间点的差异,对多维度及汇整型的信息进行复杂的分析。
- Online Analytical Process,以多维度的方式分析数据,而且能够弹性地提供上卷(Roll-up)、下钻(Drill-down)和透视分析(Pivot) 等操作,它是呈现集成性决策信息的方法,多用于决策支持系统、商务智能或数据仓库
- 联机交易处理(OLTP),联机交易处理,更侧重于基本的、日常的事务处理,包括数据的增删改查。
元数据(Metadata)
一个管理元数据信息的系统,能够提供方便的元数据的操作和查询操作
数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系相关推荐
- 宽表, 窄表, 维度表, 事实表的区别
在数据开发里, 会涉及到一些概念: 宽表, 窄表, 维度表, 事实表 宽表: 把多个维度的字段都放在一张表存储, 增加数据冗余是为了减少关联, 便于查询. 查询一张表就可以查出不同维度的多个字段 窄表 ...
- Greenplum 实时数据仓库实践(8)——事实表技术
目录 8.1 事实表概述 8.2 周期快照 8.3 累积快照 8.4 无事实的事实表 8.5 迟到的事实 8.6 累积度量 小结 上一篇里介绍了几种基本的维度表技术,并用示例演示了每种技术的实现过程. ...
- 统计内表行数常用的三种方法
以下是统计内表行数常用的三种方法, 如下: 1.LOOP AT it_itab. g_lines2 = g_lines2 + 1. ENDLOOP. 该方法是通过循环内部表自己累 ...
- exp/imp三种模式——完全、用户、表
ORACLE数据库有两类备份方法.第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库:第二类备份方式为逻辑 ...
- php表单数据类型,form表单中enctype属性的三种类型
1.form表单中enctype属性的三种类型 form表单中enctype属性可以用来控制对表单数据的发送前的如何进行编码,enctype有三种,分别为: multipart/form-data不对 ...
- 【HBZ分享】数仓里面的概念-宽表-维度表-事实表概念讲解
数仓概念 1. 度量值: 可被统计的,比如:次数,销量,营销额,订单表中的下单金额等可以统计的值叫度量值2. 维度表:(1). 对事实描述的信息,每一张表都对应现实世界中的一个对象或概念,比如:用户, ...
- 干 MySQL 两千万数据的大表优化解决过程,三种厉害的解决方案
问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...
- 【重复提交表单】表单重复提交的三种情况,解决办法
引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...
- mysql002多表查询.on链接分为三种情况,左链接,右链接,全链接
-- on链接(最实用),分为三种情况,左链接,右链接,全链接 -- 左外链接,左表全部显示,如果匹配不到右表的内容使用null代替. SELECT * FROM emp e LEFT JOIN de ...
最新文章
- apex英雄机器人探路者怎么玩_《Apex英雄》探路者机器人怎么玩 探路者机器人技能特性及玩法...
- 安全攻防技能——Web安全——XSS
- html关于强制显示、隐藏浏览器的滚动条
- Javascript隐式转换
- Centos 7 GCC 7.3编译器安装方法及C++17标准测试示例
- 关于特殊的LCS问题的优化
- [转]状态压缩dp(状压dp)
- Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)
- paip.TechExcel DevSuite IIS 根目录结构
- JavaScript设计模式----策略模式
- Velodyne-16完全配置
- exchange协议发送邮件
- 服务器系统和操作系统有什么区别
- 十六进制与rgb颜色转换
- 梯度回归模型预测PPI
- vue如何动态渲染本地图片img
- 新博立,存此证-关于可用性的理解
- 有限元流体模拟matlab仿真
- 十三届智能车直立车程序
- 附PPT下载|网易大数据用户画像实践
热门文章
- 在Fedora上设置Xen Dom0:在Fedora 12上使用Linux Kernel 2.6.29实现Xen 3.4.1
- 【笔记】css修饰2
- C++小游戏源代码,是的,你没有看错,没有代码我:奥里给干了它。
- 卸载LuDaShi时弹出“正在运行”“已被打开”的一种解决方法
- USB TYPEC转HDMI+VGA扩展坞方案设计|USB TYPEC转HDMI/VGA拓展坞电路|AG9320与AG9321方案对比和方案选型
- PDB文件详解一:标题部分
- 基于I2C硬件协议的AHT20温湿度传感器的数据采集
- 高喊“代替中国”!印度高层称五年成世界工厂,英媒:不可能
- 【立体匹配论文阅读】【一】AD-Census
- 北信源董事长林皓:“信源豆豆”要做AI+IOT的社交平台