数据仓库建模理论(一)

维度模型

  • 维度建模按数据组织类型划分可分为星型模型、雪花模型、星座模型。
  • 选择业务处理过程 > 定义粒度 > 选择维度 > 确定事实

一、星型模型

主要是维表和事实表,以事实表为中心,所有维度直接关联在事实表上,呈星型分布。

二、雪花模型

一个事实表关联多个维度表,维度表再关联维度表

三、星座模型

多张事实表共享维度表,只反映是否有多个事实表,他们之间是否共享一些维度表。

事实表

用来存储事实的表,这些事实通常是指可以量化的业务指标,如销售额、订单数量等。事实表的特点是有大量的行,每行代表一个业务事件的度量。例如,一张记录了公司所有业务交易的清单。每一条记录都是一个事实,比如一次销售或一笔支出。

一、事务事实表

也称原子事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原子的数据。类似于mysql binlog日志,每一次相关的change都记录下来,生成一行新的数据。

二、周期快照事实表

以一个周期为时间间隔,来记录事实,一般周期可以是每天、每周、每月、每年等。只看某个业务过程,比如订单收货,数据按订单收货时间来切分,周期可以为每天、每月等。

三、累积快照事实表

用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点;当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。要看整个生命周期的多个业务过程,比如:创建订单 → 买家付款 → 卖家发货 → 买家确认收货。粒度是一个订单一行数据,创建订单时间,付款时间,发货时间,收货时间,分别作为一个字段,便于计算不同业务过程的时间间隔。

四、区别

事务事实表 周期快照事实表 累计快照事实表
时期/时间 离散事务时间点 以有规律的、有预测的 用于时间跨度不确定的不断变化的工作流
日期维度 事务日期 快照日期 相关业务过程涉及的多个日期
粒度 每行代表实体的一个事务 每行代表某时间周期的一个实体 每行代表一个实体的生命周期
事实 事务事实 累积事实 相关业务过程事实和时间间隔事实
事实表加载 插入 插入 插入与更新
事实表更新 不更新 不更新 业务过程变更时更新

五、事实表设计八大原则

1、尽可能包含所有与业务过程相关的事实
2、只选择与业务过程相关的事实

  • 例如,订单的下单这个业务过程,事实表中不应该存在支付金额这个表示支付业务过程的事实。

3、分解不可加性事实为可加的组件

  • 例如,订单的优惠率,应分解为订单原价金额与订单优惠金额两个事实存储在事实表中。

4、在选择维度和事实之前必须先声明粒度
5、在同一个事实表中不能有多种不同粒度的事实
6、事实的单位要保持一致
7、对事实的null值要处理
8、使用退化维度提高事实表的易用性

维度表

一、概念

  • 维度表就像是事实表的说明书。它们帮助我们理解事实表中的数字背后的故事。例如,我们可能会有一个产品维度表,它包含了产品的详细信息。
  • 维度表包含了事实表中指定属性的相关详细信息,最常用的维度表有日期维度、城市维度等。
  • 表命名以dim开头,后面加上对该指标的描述

二、维度表设计原则

维度的作用一般是查询约束、分类汇总以及排序
1、维度属性尽量丰富,为数据使用打下基础
2、给出详实的、富有意义的文字描述
3、区分数值属性和事实
4、沉淀出通用的维度属性,为建立一致性维度做好铺垫
5、退化维度:直接把一些简单的维度放在事实表中
6、缓慢变化维:随时间发生变化的维度

事实表和维度表的关系

事实表和维度表通过外键关联,这种关系使得我们可以将量化的业务指标(事实)与描述性的属性(维度)结合起来,进行多角度的数据分析。

posted @   一年都在冬眠  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示