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;等依賴與團隊規模真的擴大,再升級到平台級方案。

參考資料