flowchart LR
W3["Week03<br/>ingest / replay scripts"] --> W4["Week04<br/>lakehouse snapshots"]
W4 --> W5["Week05<br/>semantic marts"]
W5 --> W6["Week06<br/>asset factory"]
W6 --> W7["Week07<br/>parse pipeline"]
W6 --> W8["Week08<br/>retrieval / RAG"]
W6 --> W11["Week11<br/>evals"]
W6 --> W14["Week14<br/>governance"]
Week 6:资产化数据工厂——编排、回填与可追溯
从“脚本跑通”升级到“数据产品可运营”
Week03 让数据能可靠进来,Week04 让表状态可快照、可回看,Week05 让业务口径可复用。
Week06 要解决的是上线前一定会暴露的问题:
当链路由多个脚本、表、指标和未来索引组成时,团队如何知道哪些资产完成了、哪些分区缺失、失败后该补哪一段、补完后如何验证、证据如何交接?
Week06 不是 Dagster UI 教程,也不是重写 pipeline。本周只做一件事:把 Week03-Week05 的脚本、表和指标组织成可依赖、可分区、可回填、可检查、可追溯、可交接的资产化数据工厂 v1。
本周一句话
把 ticket_ingest.py、manifest、lakehouse baseline、KPI mart、runbook 和 evidence report 放到一张可运营的 asset graph 里。
Week06 的交付标准不是“Dagster 页面上有绿色框”,而是另一个人能根据 asset graph、partition、checks、run evidence 和 runbook 判断:这批数据是否可以被 Week07 解析、Week08 检索或 Week11 评测继续消费。
为什么 Week06 重要
- 如果链路只靠“先跑 A、再跑 B”的口头顺序维护,换一个人就无法接手。
- 如果没有 partition boundary,补数只能靠经验,很容易全量重跑或重复写入。
- 如果没有 asset checks,跑完不等于可信,下游仍然可能消费坏数据。
- 如果没有 run evidence,Week07 解析、Week08 检索、Week11 评测和 Week14 治理都缺少可追溯基线。
Week06 不是什么
- 不是把 Dagster 当成好看的 UI 演示。
- 不是重写 Week03 ingest、Week04 lakehouse 或 Week05 dbt 逻辑。
- 不是提前做 Week07 文档解析、Week08 RAG、Week10 工具治理或 Week14 OpenLineage 平台。
- 不是依赖 Dagster+ 专有能力;Student Core 默认使用 Docker Compose + Dagster OSS + devbox。
你可能以为 / 实际上
| 你可能以为 | 实际上 Week06 要建立的判断 |
|---|---|
| 有脚本顺序就等于有 pipeline | 只有记录 asset key、upstream、partition、status 和 evidence,团队才知道数据产品边界 |
| 能重跑就等于能 backfill | backfill 必须基于明确 partition window、reason code、idempotency guard 和 downstream impact |
| Dagster UI 变绿就可以交付 | 还要看 asset checks、run evidence、optional dependency 是否诚实写成 skipped/not_available |
| 有日志就有证据 | 日志只说明过程片段,run evidence 才是可校验、可归档、可交接的运行事实 |
本周在整门课里的位置
上承 Week03
Week03 已经有 ingest、checkpoint、replay/backfill 的脚本思维。Week06 把它升级为 asset-level partition 和 backfill。
接住 Week04
如果 lakehouse 已完成,就记录 snapshot / table state;如果尚未完成,就作为 optional observation,不阻塞主线。
接住 Week05
如果 KPI mart 已完成,就进入 asset graph;如果尚未完成,就用 placeholder / skipped evidence 记录状态。
交给 Week07+
Week07 的 parse pipeline、Week08 的 evidence serving、Week11 的 evals 和 Week14 的 governance 都需要 Week06 的 run evidence。
先看 Week06 主线图
脚本链路 vs 数据工厂
| 维度 | 脚本链路 | Week06 数据工厂 |
|---|---|---|
| 运行对象 | python xxx.py 的执行顺序 |
可命名、可依赖、可检查的 asset |
| 状态表达 | 日志里写了 success | asset + partition + checks + evidence 共同表达 |
| 失败恢复 | 让作者凭经验重跑 | 根据 reason code 选择 retry / replay / backfill / hold |
| 下游交接 | 口头说明“我跑过了” | runbook + evidence report + delivery summary |
任务流 vs 资产流
| 问题 | 任务流会怎么说 | 资产流必须怎么说 |
|---|---|---|
| 今天哪些数据可消费 | “任务 B 跑完了” | week06/silver/ticket_fact_partitioned 的 2026-04-17 分区 checks 通过 |
| 上游缺数据怎么办 | “重新跑 ingest” | 先看 manifest gate,再生成 backfill dry-run plan |
| Week04 / Week05 没跑怎么办 | “先假设有” | optional observation 写 skipped/not_available,不阻塞 Student Core |
| 交给下一周用什么 | “看这个表” | 提供 data release、run evidence、known limitations 和 unblock decision |
五个课时
课时 1|为什么脚本跑通不等于数据产品可运营
- 任务流和资产流的差别
- 为什么 Week03 replay/backfill 还不够
- 为什么 AI 数据链路必须留下运行证据
课时 2|Dagster Assets 与资产图:从任务流到资产流
- asset key、deps、Definitions、group、external asset
- source observation 与 materialization job 的边界
- Week06 最小 asset graph 怎么命名
课时 3|Partition / Backfill / Replay:把补数做成可控动作
- daily partition 为什么是 Student Core 默认
- retry / rerun / replay / backfill 怎么区分
- 如何补一个失败分区,而不是盲目全量重跑
课时 4|Asset Checks / Metadata / Run Evidence:把“跑过”升级成“可验收”
- asset checks 和 pytest 的分工
- run evidence schema 必填 / 可选字段
- optional Week04 / Week05 依赖如何记录 skipped
课时 5|Data Factory Runbook:从个人脚本到团队可交接系统
- 故障定位、补数、验证、交接
- UI 与 CLI 两条恢复路径
- 如何把 Week06 交给 Week07 / Week08 / Week11 / Week14
实验|资产图 + 回填 + 证据闭环
实验会围绕一个最小闭环展开:
- 启动 Docker Compose / devbox / Dagster
- 加载 Week06 asset graph
- materialize 一个 daily partition
- 制造一个安全的数据缺口
- 执行 backfill / replay dry-run
- 跑 5 类 asset checks
- 生成
reports/week06/run evidence - 按 runbook 完成交接记录
作业|提交 Data Factory v1
作业要求提交:
- asset graph summary 或截图
- partition strategy
- 一次精准回填记录
- asset checks 摘要
- run evidence report
- Data Factory Runbook v1
- 已知限制与下一步建议
本周交付物
| 类型 | 建议文件 | 保护的问题 |
|---|---|---|
| Blueprint | docs/blueprints/week06/week06-data-factory-blueprint.md |
防止把 Week06 做成无边界的 Dagster UI 展示 |
| Asset Graph | docs/blueprints/week06/week06-asset-graph.md |
防止 asset key、依赖、owner、optional 节点靠口头记忆 |
| Partition Strategy | docs/blueprints/week06/week06-partition-backfill-strategy.md |
防止失败后只能全量重跑或凭经验补数 |
| Evidence Schema | contracts/run_evidence/week06_run_evidence.schema.json |
防止运行证据不可校验、不可归档、不可复盘 |
| Runbook | runbooks/week06-data-factory.md |
防止只有作者本人知道怎么恢复和交接 |
| Reports | reports/week06/ |
防止 checks、backfill plan、delivery summary 没有可追溯落点 |
接下来怎么学
先看课时 1 建立问题意识 → 课时 2 读懂 asset graph → 课时 3 掌握补数边界 → 课时 4 建立验收证据 → 课时 5 写成 runbook → Lab 跑闭环 → Assignment 提交 Data Factory v1
本周关键判断
Week06 的核心是:用 asset graph、partition、checks、metadata、evidence 和 runbook,让数据链路从个人脚本变成团队可运营的数据产品。