CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
数据工程师入门/课时/数据建模
RawBlame
课时目录12 节

数据工程师入门

  1. 01数据工程是什么
  2. 02基础技能
  3. 03Python 与 SQL
  4. 04存储与数仓
  5. 05数据采集与 ETL
  6. 06编排工具
  7. 07大数据组件
  8. 08数据建模
  9. 09质量与安全
  10. 10云平台与对象存储
  11. 11流处理与 Reverse ETL
  12. 12综合练习

数据建模

维度建模、星型/雪花、缓慢变化维。

30 分钟

数据建模

维度建模让分析师用一致的表结构做 JOIN 与聚合。星型 schema、缓慢变化维(SCD)是数仓面试与实战的高频题。

学习目标

  • 区分事实表与维度表
  • 理解星型模型与雪花模型
  • 掌握 SCD Type 1 / 2 的适用场景

事实 vs 维度

类型存什么CodeRoadMap 示例
事实表可度量的业务过程用户完课事件、页面访问
维度表描述性上下文课程、用户、路线图、日期
fct_lesson_complete
  ├── track_key    → dim_track
  ├── user_key     → dim_user
  └── date_key     → dim_date

度量(measure):duration_seconds、progress_pct。维度属性:track.title、user.region。

星型 vs 雪花

模型结构优缺点
星型维度宽表,少 JOIN查询简单,冗余可接受
雪花维度规范化多级省存储,JOIN 多

分析 mart 优先 星型;dim_track 直接含 category、level,不必再 JOIN dim_category 除非维度极大。

缓慢变化维(SCD)

源表 cf_track.title 会改 slug 不变时:

类型行为适用
SCD1覆盖旧值,无历史纠错、不重要属性
SCD2新行 + valid_from/to需历史分析(价格、状态)
SCD3保留有限历史列较少用

SCD2 表示例:

-- dim_track 当前有效行
SELECT * FROM dim_track
WHERE track_id = 42 AND is_current = TRUE;

命名与 grain

Grain(粒度) 是事实表一行代表什么:

  • fct_daily_track_views:每 track 每天一行
  • fct_lesson_complete:每次完课事件一行

grain 错了,指标永远对不齐——与分析师对齐的第一件事。

与路线图的关系

  • /roadmaps/data-engineer — Data Modeling 节点
  • de-storage — 分层落地
  • /tracks/sql-essentials — JOIN 与聚合实现
  • 练习

    • 为「用户完课」设计一张事实表 + 三张维度表,列出主键与外键
    • 课程 title 变更用 SCD1 还是 SCD2?说明理由
    • 画星型 schema 示意图(至少 1 fact + 2 dim)

    小结

    事实存过程,维度存描述;星型 + 正确 grain 是可信指标的前提。 下一课讲质量与安全。

    加载本节练习…
    ← 上一课大数据组件下一课 →质量与安全