数据仓库之建模

  • 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)

一个管理元数据信息的系统,能够提供方便的元数据的操作和查询操作

数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系相关推荐

  1. 宽表, 窄表, 维度表, 事实表的区别

    在数据开发里, 会涉及到一些概念: 宽表, 窄表, 维度表, 事实表 宽表: 把多个维度的字段都放在一张表存储, 增加数据冗余是为了减少关联, 便于查询. 查询一张表就可以查出不同维度的多个字段 窄表 ...

  2. Greenplum 实时数据仓库实践(8)——事实表技术

    目录 8.1 事实表概述 8.2 周期快照 8.3 累积快照 8.4 无事实的事实表 8.5 迟到的事实 8.6 累积度量 小结 上一篇里介绍了几种基本的维度表技术,并用示例演示了每种技术的实现过程. ...

  3. 统计内表行数常用的三种方法

    以下是统计内表行数常用的三种方法, 如下:   1.LOOP AT it_itab.    g_lines2 = g_lines2 + 1.    ENDLOOP.    该方法是通过循环内部表自己累 ...

  4. exp/imp三种模式——完全、用户、表

    ORACLE数据库有两类备份方法.第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库:第二类备份方式为逻辑 ...

  5. php表单数据类型,form表单中enctype属性的三种类型

    1.form表单中enctype属性的三种类型 form表单中enctype属性可以用来控制对表单数据的发送前的如何进行编码,enctype有三种,分别为: multipart/form-data不对 ...

  6. 【HBZ分享】数仓里面的概念-宽表-维度表-事实表概念讲解

    数仓概念 1. 度量值: 可被统计的,比如:次数,销量,营销额,订单表中的下单金额等可以统计的值叫度量值2. 维度表:(1). 对事实描述的信息,每一张表都对应现实世界中的一个对象或概念,比如:用户, ...

  7. 干 MySQL 两千万数据的大表优化解决过程,三种厉害的解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  8. 【重复提交表单】表单重复提交的三种情况,解决办法

    引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...

  9. mysql002多表查询.on链接分为三种情况,左链接,右链接,全链接

    -- on链接(最实用),分为三种情况,左链接,右链接,全链接 -- 左外链接,左表全部显示,如果匹配不到右表的内容使用null代替. SELECT * FROM emp e LEFT JOIN de ...

最新文章

  1. apex英雄机器人探路者怎么玩_《Apex英雄》探路者机器人怎么玩 探路者机器人技能特性及玩法...
  2. 安全攻防技能——Web安全——XSS
  3. html关于强制显示、隐藏浏览器的滚动条
  4. Javascript隐式转换
  5. Centos 7 GCC 7.3编译器安装方法及C++17标准测试示例
  6. 关于特殊的LCS问题的优化
  7. [转]状态压缩dp(状压dp)
  8. Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)
  9. paip.TechExcel DevSuite IIS 根目录结构
  10. JavaScript设计模式----策略模式
  11. Velodyne-16完全配置
  12. exchange协议发送邮件
  13. 服务器系统和操作系统有什么区别
  14. 十六进制与rgb颜色转换
  15. 梯度回归模型预测PPI
  16. vue如何动态渲染本地图片img
  17. 新博立,存此证-关于可用性的理解
  18. 有限元流体模拟matlab仿真
  19. 十三届智能车直立车程序
  20. 附PPT下载|网易大数据用户画像实践

热门文章

  1. 在Fedora上设置Xen Dom0:在Fedora 12上使用Linux Kernel 2.6.29实现Xen 3.4.1
  2. 【笔记】css修饰2
  3. C++小游戏源代码,是的,你没有看错,没有代码我:奥里给干了它。
  4. 卸载LuDaShi时弹出“正在运行”“已被打开”的一种解决方法
  5. USB TYPEC转HDMI+VGA扩展坞方案设计|USB TYPEC转HDMI/VGA拓展坞电路|AG9320与AG9321方案对比和方案选型
  6. PDB文件详解一:标题部分
  7. 基于I2C硬件协议的AHT20温湿度传感器的数据采集
  8. 高喊“代替中国”!印度高层称五年成世界工厂,英媒:不可能
  9. 【立体匹配论文阅读】【一】AD-Census
  10. 北信源董事长林皓:“信源豆豆”要做AI+IOT的社交平台