Lantide Data
返回博客
数据分析实践

数据血缘不是只有大数据平台需要:一份本机报表也该知道从哪里来

数据血缘是资料来源、转换与输出之间的可追溯关系。即使只有本机 CSV 与月报,只要成果会更新、交接或除错,就值得留下最小血缘、命名规则与重跑路径。

数据血缘(data lineage)是「哪些来源,经过哪些转换,产生哪个结果」的可追溯关系。它不只服务大型资料平台:只要本机周报会重跑、交接或被问「这个数从哪来」,就需要一条最小血缘;差别只在记录深度,不在公司规模。

没有血缘时,真正浪费的是判断时间

想像一份月报数字突然下降。你手上有 orders_july.xlsxclean_orders.csv、三个 SQL 草稿与最终 HTML,却不知道:清洗档用了哪版原始资料?退款在哪一步排除?更新原始档后该重跑哪些查询?

没有血缘,团队只能靠档名、修改时间与作者记忆猜测。血缘把猜测改成依赖关系:

orders.xlsx
  → 01_clean_orders(型别、状态清理)
  → 02_monthly_revenue(月份、营收口径)
  → 03_segment_summary(市场分组)
  → Report / HTML

OpenLineage 把 lineage 建模为 Dataset、Job 与 Run:Job 消费或产生 Dataset,Run 则是某个 Job 的一次实际执行。这个模型很适合提醒我们:知道「A 依赖 B」还不够,还应知道是哪次执行与哪段转换形成结果。OpenLineage Object Model

本机分析的最小血缘应记什么

不必先导入企业级 metadata platform。对一份会重用的分析,先保留五项:

  1. 来源识别:档名/连线、工作表或资料表,以及分析时点。
  2. 转换逻辑:可重跑的 SQL,不只留下输出 CSV。
  3. 中间结果名称:用 clean_orders 而非 final_v3_new 表达用途。
  4. 输入/输出关系:每一步读什么、产出什么。
  5. 执行与限制:何时跑、是否成功、资料新鲜度与已知缺口。

这五项能回答三种常见问题:上游档案换了要重跑什么、某个错误会污染哪些下游、报告数字能否回到具体 SQL。

什么时候值得建 DAG

可以用「重用、复杂、影响」三项判断:

情境 建议记录
一次性、单一 JOIN、逻辑清楚 保留一段 SQL 与来源即可
多步清洗,中间结果会重用 命名持久 SQL 与依赖
上游常更新,需要选择性重跑 建立 DAG/Source Run
正式报告或高影响指标 再加 Plan、执行 evidence 与 limitations

别为了形式把一段简单 SQL 拆成十个节点。血缘的目的,是降低除错与重跑成本;若图比逻辑更难读,就拆过头了。

Lantide Data 如何承载本机 SQL 血缘

Lantide Data 中,持久 SQL 分页可保存转换逻辑,查询结果可作为同一工作区内的快取中间表;当下游 SQL 引用上游快取,Source Run 可依依赖顺序重跑,Lineage Graph 则显示档案、持久分页与快取间的关系。操作可参考 快取与 Source Run 指南使用者指南 §8

这里有两个重要边界:

  • 快取是工作区内的中间结果,切换工作区或重新启动后可能清除;它不是永久数仓资料表。
  • Agent 后台查询形成的 agent 快取不一定支援 Source Run;需要稳定重跑时,应使用持久 SQL 分页建立清楚依赖。

Lantide 的优点是让本机档案、SQL、Plan 与 Report 留在同一分析工作面,血缘可直接服务审阅与交付;它不取代跨系统企业 catalog、排程器或全公司的 metadata governance。

一份可直接采用的命名规则

用「序号 + 动词/成果 + 粒度」命名:

  • 01_clean_orders_order_grain
  • 02_revenue_by_month
  • 03_retention_by_signup_cohort

并在 Plan 写下每一步的 input、output、grain 与 checkpoint。这比 query_final_2 多几个字,却能让下一位接手者少重建一次整个分析脉络。

结语

先挑一份每月会重跑的本机报表,画出「原始档 → SQL → 中间结果 → Report」四层,再确认每个箭头都有可重跑逻辑。这就是足以产生价值的最小 lineage;等依赖与团队规模真的扩大,再升级到平台级方案。

参考资料