データリネージ
田中VPoE「データ品質と可観測性を学んだ。最後の重要な概念がデータリネージだ。“このダッシュボードの数字はどこから来ているのか”という問いに答えられる仕組みが必要だ。」
あなた「問題が発生した時に、影響範囲を即座に特定できるということですね。」
田中VPoE「その通り。上流のデータ変更が下流にどう影響するか、逆に下流の問題が上流のどこに起因するか、双方向に追跡できることが重要だ。」
データリネージとは
データリネージ(Data Lineage)は、データの発生源から最終的な利用先までの流れを追跡する仕組みです。
リネージの種類
| 種類 | 方向 | 用途 |
|---|---|---|
| 上流リネージ | 結果 → ソース | 「この数字はどこから来た?」 |
| 下流リネージ | ソース → 結果 | 「このテーブルを変更したら何に影響する?」 |
| カラムレベルリネージ | カラム単位の追跡 | 「このカラムはどの変換を経た?」 |
リネージが必要な場面
| 場面 | 活用方法 |
|---|---|
| 障害調査 | 異常データの発生源を特定 |
| 影響分析 | テーブル変更時の影響範囲を事前把握 |
| コンプライアンス | 個人情報がどこで使われているか追跡 |
| ドキュメント | データフローの自動ドキュメント生成 |
dbtによるリネージ
dbtはref()とsource()関数によりリネージを自動構築します。
[raw.orders] → [stg_orders] → [int_order_stats] → [mart_customer_summary]
[raw.customers] → [stg_customers] ↗
# dbt docsでリネージグラフを生成
dbt docs generate
dbt docs serve
OpenLineageによる標準化
# OpenLineage イベントの例
lineage_event = {
"eventType": "COMPLETE",
"eventTime": "2026-03-06T02:30:00Z",
"job": {
"namespace": "netshop-etl",
"name": "daily_order_transform",
},
"inputs": [
{"namespace": "warehouse", "name": "raw.orders"},
{"namespace": "warehouse", "name": "raw.customers"},
],
"outputs": [
{"namespace": "warehouse", "name": "staging.stg_orders"},
],
"run": {
"runId": "run-2026-03-06-001",
"facets": {
"processing_engine": {"name": "dbt", "version": "1.7"},
"sql": {"query": "SELECT ... FROM raw.orders ..."},
},
},
}
まとめ
| 項目 | ポイント |
|---|---|
| リネージの種類 | 上流・下流・カラムレベルの3種類 |
| 活用場面 | 障害調査、影響分析、コンプライアンス |
| dbt連携 | ref()/source()による自動リネージ構築 |
| 標準化 | OpenLineageで異なるツール間のリネージを統合 |
チェックリスト
- データリネージの概念と3つの種類を説明できる
- リネージが必要な場面を具体的に挙げられる
- dbtでのリネージ自動構築の仕組みを理解している
次のステップへ
データリネージを理解しました。次は演習で、データ品質・可観測性・リネージを統合したデータ品質管理基盤を構築しましょう。
推定読了時間:15分