Lab-03b RROBCOR
本页目录· 8 条
Summary
Task Summary
A. 先探索,再建模(别盲信 ERD)
- 在动手建星型前,先看清每张表、核对关系、找重复/缺失/不一致,否则后续事实表会“带病上岗”。这一步是必做的质量门。
B. 明确“粒度”和“度量归属”,避免“双计”
- 星型的一行到底代表什么(Grain)?是“员工 × 机型 × 月份”还是“航班 × 月份”?
- 个人度量(如飞行小时)可以按员工合并;
- 航班/公司度量(如燃油/营收)不该按人头拆分后再相加,否则同一航班既算给 Pilot 又算给 Copilot,会双计。本实验的
charter_fact以 Pilot 视角聚合,你需要据此判断 Q8 是否“准确”。
C. 作业里一定要“先清后建”
- 虽然这份材料里提示示例可能不演示清洗,但作业必须先清理所有数据问题,再创建星型模式。这是评分“基本功”。
你可以直接照抄运行的核心 SQL(已在上文给出)
- 三个维度:
time_dim / model_dim / pilot_dim; - 一张事实:
描述(Description / Case Brief)
ROBCOR, Inc. 提供“按需”包机服务,机队由多种机型组成。公司快速增长后,聘请你为首任数据库管理员。你的首要任务是开发一个决策支持系统来分析包机数据。运营经理希望分析:总飞行时长、总燃油、总营收(航程 × 机型每英里收费),并能按飞行员、机型、时间下钻。主要需求:
a) 按月/年展示总营收;
b) 按飞行员展示总飞行时长;
c) 按机型展示总燃油。
数据库已提供相应业务表;可直接从 dw 账户复制:
Select * from dw.<table_name>; 或 Create Table <your_table_name> As Select … From dw.<table_name> Where …。
在实现星型模式之前,务必先做数据探索,确保数据格式正确且无脏数据;本实验将让你实际体验数据清洗流程。
环境说明
- Docker 用户:按 Week 3 导入指引初始化(完成后表在
student账户,与dw不同)。 - Oracle 服务用户:继续使用 DW 账户访问不变。
Part A:数据探索(Data Exploration)
在创建星型模式或使用业务库数据之前,必须彻底探索数据:了解每张表的内容,并验证 ERD 是否准确,以确保后续建模与分析建立在正确且完整的信息上。
请完成:
- 探索业务库中所有表的内容(逐表查看列与样例记录)。
- 在探索过程中,是否发现与业务表相关的问题?记录你的发现。
- 若发现应存在的某张表缺失,思考:与该表有关联关系的哪些表也可能受影响?
- 对与“缺失表”存在关系的表,做更深入的检查。
- 进一步探索:是否可能出现“副驾驶与正驾驶是同一人”?是否存在无正驾驶的航班?
- 我们无法预设每张表都没有重复,因此需要逐表检查重复,确保准确性与完整性。
- 除了上面的检查,你还会设计哪些额外检查来识别并处理脏数据?
小贴士(与课堂一致的检查思路):计数、唯一性、完整性、关系一致性四件套;并核对 ERD 与实际表结构是否一致(例如 Pilot/Co-pilot 的建模)。
Part B:数据清洗 & 星型模式实现
在完成所有表的数据探索之后,开始数据清洗并实现星型模式。注意:本练习里识别到的脏数据可能对星型模式影响不大(因此示例里可能不演示实际清洗动作),但在作业中必须先清理再建仓。
维度表与事实表(示例 SQL,原文保留)
思考题(文件中的 Q8)
创建完 charter_fact 后,char_fact_flown 表是否准确反映了每位飞行员的总飞行时长?(提示:围绕“度量属于谁”“是否会双计”来判断。)