数据分析-如何区分事实表、维度表、宽表
数据分析-如何区分事实表、维度表、宽表
维度表
维度表是 “描述性信息”,回答 “谁 / 什么 / 何时 / 何地”
可以简单理解为:当我们描述一件事物从多个不同角度去描述,那么这个角度的信息就是维度信息
举个栗子🌰
案例描述:
各个班级的童鞋们参加了各种活动,导员现在要统计这些信息,那么有哪些角度去描述呢?
导员需要考虑:时间、班级信息、参赛学生信息、活动信息
由此我们可以得到以下维度表
维度表:
(2)班级维度表(描述 “哪个班”)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 班级 ID | 唯一标识 | CLS001 |
| 班级名称 | 完整班级名称 | 18 级物流工程 1 班 |
| 所属学院 | 对应学院 | 经济管理学院 |
| 年级 | 入学年级 | 2018 级 |
| 导员姓名 | 班级导员 | 李老师 |
| 班级人数 | 班级总人数 | 42 |
(2)学生维度表(描述 “谁参与”)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 学生 ID | 唯一标识 | STU038 |
| 学生姓名 | 学生姓名 | iShany |
| 学号 | 学生学号 | 2018XXXX520 |
| 班级 ID | 关联班级维度表 | CLS001 |
| 联系电话 | 学生联系电话 | 18XXXXXXXX6 |
| 专业 | 所学专业 | 物流工程 |
(3)活动维度表(描述 “参与什么活动”)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 活动 ID | 唯一标识 | ACT012 |
| 活动名称 | 活动全称 | “热血青春,辩出自我” 辩论赛 |
| 活动类型 | 活动类别 | 学术竞赛 |
| 举办方 | 组织单位 | 经济管理学院 |
| 活动目的 | 活动核心目标 | 提升思辨能力、团队协作 |
| 活动地点 | 举办地点 | 学院报告厅 |
(4)时间维度表(描述 “什么时候参与”)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 时间 ID | 唯一标识 | TIME095 |
| 活动日期 | 活动开展日期 | 2020-11-15 |
| 所属学期 | 对应学期 | 2020-2021 学年上学期 |
| 月份 | 所属月份 | 2020-11 |
| 星期 | 活动当天星期 | 日 |
事实表
事实表是 “可量化的业务数据”,回答 “做了什么 / 产生了多少”
举个栗子🌰
案例描述:
各个班级的童鞋们参加了各种活动,导员现在要统计这些信息,需要参赛学生需要填写获奖情况
事实表
学生活动参与事实表(记录 “参与情况”)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 参与记录 ID | 唯一标识 | REC20201115001 |
| 学生 ID | 关联学生维度表 | STU038 |
| 班级 ID | 关联班级维度表 | CLS001 |
| 活动 ID | 关联活动维度表 | ACT012 |
| 时间 ID | 关联时间维度表 | TIME095 |
| 是否获奖 | 参与活动是否获奖 | 是 |
| 获奖等级 | 奖项级别(无则填 “无”) | 三等奖 |
| 参与时长 | 实际参与时长(小时) | 3 |
| 角色 | 活动中角色(选手 / 观众) | 辩手 |
大宽表
宽表实际上就是把事实表和维度表关联起来去除原来的 维度表ID,整理成一张大表,这个过程原来的维度信息会重复,但是优点是能通过简单筛选查询到想要的信息,技术难度更低。
举个栗子🌰
案例描述:
各个班级的童鞋们参加了各种活动,导员现在要统计这些信息,需要参赛学生需要填写获奖情况
大宽表
宽表设计(维度 + 事实整合)
| 字段名 | 字段说明 | 示例数据 |
|---|---|---|
| 参与记录 ID | 唯一标识 | REC20201115001 |
| 班级名称 | 完整班级名称 | 18 级物流工程 1 班 |
| 所属学院 | 对应学院 | 经济管理学院 |
| 学生姓名 | 学生姓名 | iShany |
| 学号 | 学生学号 | 2018XXXX520 |
| 活动名称 | 活动全称 | “热血青春,辩出自我” 辩论赛 |
| 活动类型 | 活动类别 | 学术竞赛 |
| 举办方 | 组织单位 | 经济管理学院 |
| 活动日期 | 活动开展日期 | 2020-11-15 |
| 所属学期 | 对应学期 | 2020-2021 学年上学期 |
| 参与时长 | 实际参与时长(小时) | 3 |
| 角色 | 活动中角色(选手 / 观众) | 辩手 |
| 是否获奖 | 参与活动是否获奖 | 是 |
| 获奖等级 | 奖项级别(无则填 “无”) | 三等奖 |
| 导员姓名 | 班级导员 | 李老师 |
表分分合合?怎么选择?
主要看当前的数据量和使用场景,如果使用场景如本案例一样,其实用宽表收集就很方便了,但是针对数据量很大的情况或者一个维度表应用于多个事实表,那么宽表的效率较低,如维度表发生变更,本来只需要变更一个维度表,但是在宽表中每个涉及该维度的都需要做同步,也容易出现漏同步的情况。
-
分表(维度 + 事实分开):长期使用、多场景灵活分析、数据量大、需要严格数据治理的场景(比如企业核心数据仓库的基础层 DWD、DWS)。
- 减少数据冗余,降低维护成本
- 适配业务变化,保持灵活性
- 符合数据治理规范,支撑多场景分析
[!NOTE]
分开的核心是遵循 “星型模型 / 雪花模型” 设计,从数据治理角度来看更符合长期使用需求。
-
合宽表:高频查询、简单分析、非技术人员使用、报表 / 大屏展示场景(比如应用层 ADS 的结果表)。
- 提升查询速度,减少关联计算
- 降低使用门槛,适配非技术人员
- 适配特定业务场景,简化数据处理