Chapter03-Creating Facts and Dimensions—More Complex Processes
本页目录· 7 条
这一页有部分内容暂时无法显示,其余内容完整。
此处有一段内容暂不支持显示。
Overview
Chapter 3: “Creating Facts and Dimensions—More Complex Processes” 继续围绕数据仓库的星型模式,但聚焦在 事实表 与 维度表 构建中常见的进阶难题:
count()及其它聚合函数的正确用法;- 平均值(以及 Min/Max)存入事实表时的陷阱;
- 如何借助 外连接 汇总“有而未配对”的业务数据;
- 在维度不足时动态生成 临时维度表;
- 对操作库先做 临时表预处理 再装载数据仓库。
章节通过 App Store、Employment Agency、Sales、University Sessional Jobs 四个案例穿插演示 SQL 脚本与建模思路,为后续真实项目奠定“复杂加工”的基础。
1. Use of count() Function
| 教授内容 | 学习切入点 |
|---|---|
- count(*) / count(attr) / count(distinct attr) 的差异与语义 - Mobile Apps Repository 案例:以下载量、评分、反馈为度量,维度包含 Category/University/Location/Time、 - 通过 TempFact 先统计下载后再生成最终事实表(Total Downloads / Total Apps)。 | 1. 练习写三类 count() 语句,观察 NULL 与重复记录的影响。2. 按案例在本地建 TempFact→Fact 流程,体会为何中间层能提升可控性。3. 思考 下载次数 与 应用数量 作为度量时,粒度如何变化。 |
2. Average in the Fact
| 教授内容 | 学习切入点 |
|---|---|
| - 说明平均值在多级聚合后会失真,示例“Average Score”。- “Average-of-Average” 误差:事实表算出的 60.9 ≠ 原始 67.4。- 解决:改存 Total Score 与 Number of Students 再做平均;Min/Max 也可直接存,但 Min+Max 不要混用。 | 1. 在 SQL 中对比 “平均的平均” vs “总分/人数” 结果差异。2. 复习 可加性 原则:Count/Sum 可安全汇总,Avg 需拆分。3. 试把自己项目中的平均指标拆分为 Sum+Count,验证报表一致性。 |
3. Outer Join(Employment Agency Case)
| 教授内容 | 学习切入点 |
|---|---|
| - 业务中存在“岗位有空缺但无人填补”,需 Outer Join 保留零匹配记录。- 事实度量:Total Opening / Total Placement;维度:Duration / Qualification / Month。- DurationDim 手工创建后,用 TempFact 先关联再汇总。 | 1. 练习 FULL / LEFT OUTER JOIN,观察缺失值如何进入事实表。2. 手动建自定义维度(如 Duration),体验无源数据时的解决方案。3. 思考“未匹配”数据对 KPI(如填补率)的意义。 |
4. Creating Temporary Dimension Tables(Sales Example)
| 教授内容 | 学习切入点 |
|---|---|
- 当操作库缺少 Quarter 等字段,需先造 临时 TimeDim;记录数未知、人工插入低效。- 方案:脚本自动生成 QuarterID YYYYQ、Quarter、Year 后装载事实表流程。 | 1. 用循环或日期函数批量生成时间记录,避免手工插入。2. 复习三种维度建表方式:复制、抽取、手工(对照第 2 章)。3. 评估在 ETL 工具中加入“日期维度生成器”模块。 |
5. Creating Temporary Tables in the Operational DB(Sessional Jobs)
| 教授内容 | 学习切入点 |
|---|---|
- 有些维度需先在操作库 预处理:如员工多学历,仅保留“最新学位”到仓库、。- 临时表 EmployeeTemp 解决数据清洗,再生成事实表 (Number of Contracts) 与维度 (Department/Year/Country/Degree)。 | 1. 使用 ROW_NUMBER() 或 MAX(GraduationYear) 过滤最新记录,构建 Temp 表。2. 设计操作库 → Staging → DW 的三级结构,明确每层责任。3. 练习在同一 DB 创建/删除临时表,比较性能与可维护性。 |
6. Chapter Summary
- 复杂事实表 需慎用 Avg,推荐 Sum+Count;Min/Max 可直接存。
- Outer Join 确保业务“缺值”也能进入分析视图。
- 临时维度/临时操作表 是解决源数据缺口与清洗需求的关键。