目录

0 参考列表

1 维度建模

1.1 多维体系结构

1.1.1 总线矩阵(业务矩阵)

1.1.2 一致性维度

1.1.3 一致性事实

1.2 建模模式

1.2.1 星型模式

1.2.2 雪花模式

1.2.3 星座模式

2 维度表

2.1 概念

2.2 分类

2.2.1 根据维度值变化情况分

2.2.2 根据维度表大小分

2.2.3 按维度层次分

2.2.4 退化维度

2.3 拉链表

2.3.1 作用

2.3.2 实现方法

2.3.3 查询优化

2.4 常用的维度表

2.5 桥接表

2.5.1 事实表和维度表之间的多对多关系

2.5.2 维度表之间的多对多关系

3 事实表

3.1 概念

3.2 分类

3.2.1 根据粒度划分

3.2.2 根据用途划分

3.3 设计流程

3.3.1 选择业务过程

3.3.2 声明粒度

3.3.3 确定维度

3.3.4 确定事实


0 参考列表

CSDN:数据仓库全流程https://blog.csdn.net/huang66666666/article/details/102556874

爱码网:多对多维度或多值维度-桥接表https://www.likecs.com/show-203780990.html

CSDN:耗时n年,38页《数据仓库知识体系.pdf》(数据岗位必备)https://notomato.blog.csdn.net/article/details/120306023

CSDN:数据仓库工程师面试题目(不定期更新)https://blog.csdn.net/lurrass/article/details/105852048?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165784907916781647566348%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165784907916781647566348&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-105852048-null-null.142%5Ev32%5Epc_rank_34,185%5Ev2%5Econtrol&utm_term=%E6%95%B0%E4%BB%93%E5%B7%A5%E7%A8%8B%E5%B8%88%E9%9D%A2%E8%AF%95&spm=1018.2226.3001.4187

1 维度建模

1.1 多维体系结构

1.1.1 总线矩阵(业务矩阵)

总线矩阵是指导维度模型建设的规划性文件,包含业务过程、公共一致性维度.每行代表一个业务过程,每列表示一个公共维度;还包括业务过程与维度间的联系,即业务过程与维度的关联外键.;另外可加入主题划分和业务过程包含的度量值.

1.1.2 一致性维度

(1) 总线架构中,多个数据集市中的相同维度需保持一致.在后台建立好的维度同步复制到各个数据集市,这样所有数据集市的这部分维度都是完全相同的.建立新的数据集市时,需要在后台进行一致性维度处理,根据情况来决定是否新增和修改一致性维度,然后同步复制到各个数据集市.

(2 ) 同一数据集市中,两个维度如果有关系,要么就是完全一样的,要么就是一个维度在数学意义上是另一个维度的子集.例如建立月维度的话,月维度的各种描述必须与日期维度中的完全一致.

1.1.3 一致性事实

不同集市的同一事实,需保证口径一致,单位统一.

1.2 建模模式

1.2.1 星型模式

星形模式(Star Schema)是以一张事实表为中心,所有的维度表直接连接在事实表上.数据有冗余,很多统计不需要做外部的关联查询,一般情况下效率比雪花模型高.

1.2.2 雪花模式

雪花模式以一张事实表为中心,部分维度表没有直接连接到事实表上,而是通过其他维度表连接到事实表上.数据冗余少,但统计时一般需要关联多层维表,性能比星型模型要低.

1.2.3 星座模式

星座模式是基于多张事实表的,而且共享维度信息.

2 维度表

2.1 概念

(1) 维度:表示对数据进行分析时所用的一个量,例如要分析产品销售情况, 可以选择按类别来进行分析,或按区域来分析.维度表信息比较固定,且数据量小.

(2) 代理关键字:一般是指维度表中使用顺序(序列)分配的整数值作为主键,用于维度表和事实表的连接.使用代理关键字,而不应该使用自然关键字或者智能关键字.

2.2 分类

2.2.1 根据维度值变化情况分

(1) 更新方式

①覆盖更新:通过更新维度记录直接覆盖已存在的值,不维护记录的历史.一般用于修改错误的数据.

②增加行:在源数据发生变化时,给维度记录建立一个新的"版本"记录,从而维护维度历史.一般通过拉链表来实现.

③增加列:给表增加新列,来存储新值,同时保留原来的值不变.通常用作保持维度记录的几个版本.

(2) 分类

缓慢变化维:与时间等因素无关的,变化相对较慢的维度.

快速变化维:受时间或输入数据影响,变化相对较快的维度.一般通过增加列来更新数据.

2.2.2 根据维度表大小分

①大维度:维度表的字段很多、记录数很大,例如客户表维度表.由于数据量大,导致查询效率很低,需要进行优化.
        ②迷你维:将大维度中的使用频率较高的字段提取出来,形成一个字段少的迷你维度表,在查询时改为查迷你维度表,能明显提高查询效率.

2.2.3 按维度层次分

①普通维:基于一个维表的维度,由维表中的不同列来表示维度中的不同级别.

②父子维:基于两个维表列的维度,由维表中的两列来共同定义各个成员的隶属关系,一列称为成员键列来标识每个成员,另一列称为父键列来标识每个成员的父代.

③雪花维:基于多个维表的维度,各个维表间以外键关联,分别存储在同一维度中不同级别的成员列值.

2.2.4 退化维度

一般都是事务的编号,如订单编号、发票编号等.这类编号需要保存到事实表中,但是不需要对应的维度表.退化维度经常会和其他一些维度一起组合成事实表的主键,在分析中可以用来做分组使用.

2.3 拉链表

2.3.1 作用

需要查看数据历史状态,同时考虑到存储空间.

2.3.2 实现方法

①维度表和ODS全量表根据代理主键做左关联,在维度表中找出有变化的数据,修改数据状态为'无效',修改对应的结束日期为当前日期;找出不存在于ODS全量表的数据,修改对应的结束日期为当前日期,作为临时表1;

②ODS全量表和维度表根据代理主键做左关联,在ODS全量表全量表中找出找出有变化的数据和存在与维度表的数据,修改开始日期为当前日期,结束日期为'2099-12-31',作为临时表2;

③将临时表1和临时表2 union all 后覆盖写入维度表.

2.3.3 查询优化

①给开始日期和结束日期加索引

②添加数据状态字段

③查询时只提供只包含最近几个月的拉链表

2.4 常用的维度表

①时间维度表:描述星型模式中记录的事件所发生的时间,具有所需的最低级别的时间粒度.

②地理维度表:描述位置信息的数据,如国家、省份、城市、区县、邮编等.

③产品维度表:描述产品及其属性.

④人员维度表:描述人员相关的信息,如销售人员、市场人员、开发人员等.

⑤范围维度表:描述分段数据的信息,如高级、中级、低级等.

2.5 桥接表

维度表和事实表的标准关系是一对多,但实际可能事实表和维度表之间的多对多关系 和 维度表之间的多对多关系 这两种情况,导致关联时产生重复数据.

2.5.1 事实表和维度表之间的多对多关系

在多个维度表关联单个事实事务时,事实表和维度表之间可能是多对多关系.例如多个销售员可以参与同一销售事务,想要统计每个销售员的销售情况.

统计时需要针对每条事实表记录中的销售组,在桥接表中查找相应的销售组.在桥接表中添加权重因子,同一销售组的权重因子之和为1.根据每个销售员在分组中的权重因子分配事实.

2.5.2 维度表之间的多对多关系

大多数维度都不是完全相互独立的,可能存在多对多的关系.例如银行系统中,一个账户有多个客户,一个客户也有多个账户,想根据账户的月度账单统计客户的月度账单.可以创建账户和客户的桥接表,并添加权重因子,同一账户的权重因子之和为1.根据每个客户的在桥接表中的权重因子分配事实.

3 事实表

3.1 概念

(1) 事实:业务流程中的一条业务.

(2) 粒度:数据仓库的数据单位中保存数据的细化或综合程度的级别.

(3) 事实表:每行数据代表一个业务事件,存放用来描述业务的大量数据,也包含了与各维度表相关联的外键.

3.2 分类

3.2.1 根据粒度划分

(1) 事务事实表(原子事实表):描述业务过程,数据的粒度通常是每个事务一条记录,保存的是最原子的数据.

(2) 周期快照事实表:统计一个实体在一段时间周期内的累积事实数据.例如卖家累计快照事实表,包含了历史截至当日的下单金额、历史截当日的支付金额等字段.

(3) 累计快照事实表:描述整个业务生命周期中的关键事件,通常具有多个日期字段来记录关键时间点;当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改.例如订单累计快照事实表,粒度是订单,同时包含订单创建时间、付款时间、发货时间、收货时间等关键时间点字段,便于计算不同业务过程的时间间隔.

3.2.2 根据用途划分

(1) 原子事实表.

(2) 聚集事实表(汇总事实表):原子事实表上的汇总数据.

(3) 合并事实表:是指将位于不同事实表中处于相同粒度的事实进行组合建模而成的一种事实表,它的维度是两个或多个事实表的相同维度的集合.合并事实表的粒度可以是原子粒度也可以是聚集粒度.

3.3 设计流程

选择业务过程→声明粒度→确定维度→确定事实.

3.3.1 选择业务过程

①分析业务的生命周期,业务过程通常使用行为动词表示业务执行的活动;

②明确关键的业务步骤:该订单流转的业务过程有4个,创建订单→买家付款→卖家发货→买家确认收货;

③根据业务需求,选择与维度建模有关的业务过程;

④根据所选的业务过程确定事实表类型.

3.3.2 声明粒度

①尽量选择最细级别的原子粒度,以确保事实表的应用具有最大的灵活性.

②保证粒度能精确定义事实表的每一行所表示的业务含义.

3.3.3 确定维度

应该选择能够描述清楚业务过程所处的环境的维度信息.

3.3.4 确定事实

选择与业务过程有关的所有事实,且事实的粒度要与所声明的事实表的粒度一致.

数据仓库2_数据建模_维度建模相关推荐

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

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

  2. 数据仓库系列(一)什么是维度建模以及维度建模的基本要素

    文章目录 一.前言 二.什么是维度建模 三.维度建模的基本要素 3.1 事实表 3.2 维度表 一.前言 学习数据仓库,你一定会了解到两个人:数据仓库之父比尔·恩门(Bill Inmon)和数据仓库权 ...

  3. 大数据建模篇--维度建模

    维度建模法 维度建模法: 就是按照事实表和维度表来构建数仓 一般在数仓DWD层进行建模. 有星型模型,雪花模型,星座模型. 星形模型:事实表可以关联多个维度表,维度表之间没有关系 雪花模型:事实表关联 ...

  4. 通俗易懂数仓建模:范式建模与维度建模

    一.两种建模思想 对于 Inmon 和 Kimball 两种建模方式可以长篇大论叙述,但理论是很枯燥的,尤其是晦涩难懂的文字,大家读完估计也不会收获太多,所以笔者根据自己的理解用通俗的语言提炼出最核心 ...

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

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

  6. 老司机带带我:数仓建模架构|维度建模剖析与案例演示

           作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群.持续系统化给大家分享一下关于数据仓库建设的经验总结.本系列既有数据仓库的形而上学理论体系,也有结合公司 ...

  7. 【电商数仓】关系建模与维度建模、维度表和事实表、几种维度模型、数仓建模原则

    文章目录 1 关系建模与维度建模 (1)关系建模 (2) 维度建模 2 维度表和事实表 (1)维度表 (2)事实表 事务型事实表 周期型快照事实表 累积型快照事实表 3 维度模型分类 (1)星型模型 ...

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

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

  9. 数据仓库(基础篇)——基于维度建模思想

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

最新文章

  1. windows上的svn服务器迁移到linux
  2. (0013)iOS 开发之集成友盟第三方登录
  3. python编程员工资-Python 程序员的工资能有多高?
  4. 初探linux子系统集之led子系统(一)【转】
  5. Microsoft Sync Framework同步数据库 3:针对同步进行设置
  6. jQuery经典面试题及答案精选[转]
  7. 基于Boost::beast模块的单元测试程序
  8. mybatis源码_MyBatis架构和源码
  9. 高等数学下-赵立军-北京大学出版社-题解-练习9.1
  10. .Net Core 1.1打包发布到Linux
  11. python水印_Python如何为图片添加水印
  12. matlab矩阵作分钟平均,提高matlab运行速度和节省空间的心得合集(ZT)
  13. \t\t产后饮食标准 饮食原则 最适合新妈妈吃的菜 饮食秘诀 禁忌
  14. 挂载阿里云盘到本地目录
  15. Python对excel合并单元格
  16. 自旋波matlab计算,从电子到磁振子,自旋波计算开启新篇章
  17. 你绝对不知道的17个Maya插件
  18. Android离线语音识别(SpeechRecognizer、PocketSphinx)
  19. linux显示桌面命令,linux显示桌面快捷键设置
  20. DEMATEL-ISM模型的Python实现——方法介绍以及代码复现

热门文章

  1. lisp封装为vlx方法_lisp 创建自定义菜单行数过多为什么不能打包成VLX
  2. 未来计算机代替设计师,计算机技术真的能代替室内设计师进行设计吗?
  3. Eclipse 注释xml 快捷键
  4. DevTools failed to parse SourceMap 警告解决方法
  5. SourceMap还原前端代码
  6. 菜鸟理解int为啥是4个字节
  7. 【通用设计】分布式系统中接口的幂等性
  8. 【excel技巧】-首行/列固定显示(冻结)
  9. focus-within switch tab
  10. CDH安装flink