Databricks

Unity Catalog Lineageで実現するデータ系譜と影響分析|テーブル・カラム単位の追跡

2026-03-26
更新: 2026-03-27
NicheeLab編集部

データパイプラインが複雑化すると、「あるテーブルを変更したら下流のどこに影響するか」「ゴールドテーブルの数値は どのソースカラムから導出されたか」という問いに即座に答えられる仕組みが不可欠になります。 Unity Catalog Lineageは、Databricks上で実行されるSparkジョブのテーブル間・カラム間の依存関係を 自動的に記録し、UIとAPIの両面で可視化・照会できる機能です。

この記事では、Lineageの仕組み、UIでの視覚化方法、Information Schemaビュー、REST APIでのプログラム取得、 カラムレベルリネージの詳細、影響分析の実務手順、そしてDatabricks認定試験での出題ポイントを整理します。

データ系譜(Lineage)とは

データ系譜とは、データがどこから来て、どのように変換され、どこに格納されたかの追跡記録です。 Unity Catalog Lineageは、Sparkジョブが読み取ったテーブル(上流)と書き込んだテーブル(下流)の関係を 自動的にキャプチャします。ETLコードに特別なアノテーションを加える必要はありません。

  • テーブルレベル: テーブルAを読み取ってテーブルBに書き込んだ、という依存関係
  • カラムレベル: テーブルAのprice列とquantity列がテーブルBのrevenue列の算出に使われた、という変換経路
  • ノートブック/ジョブ: どのノートブック・ジョブがその変換を実行したか

このように3層の情報が自動的に蓄積されることで、データガバナンスと障害調査の両方が効率化されます。

Data Explorer UIでのリネージ可視化

最も直感的な確認方法は、Data Explorer(Catalog Explorer)のUIです。 テーブルの詳細ページで「Lineage」タブを開くと、上流テーブル(読み取り元)と下流テーブル(書き込み先)が 有向グラフとして表示されます。

  • ノードをクリックすると、そのテーブルの詳細に遷移できる
  • カラムレベルのリネージを展開すると、カラム同士の関係がハイライトされる
  • ノートブック/ジョブのリンクから、変換を実行したコードに直接ジャンプできる

UIは非技術者との共有にも適しており、「このレポートの数値はどこから来ているか」を ビジネスユーザーに説明する際にも活用できます。

Information SchemaのLINEAGEビュー

プログラム的にLineage情報を取得したい場合、Information Schemaの専用ビューが便利です。 Unity CatalogのInformation Schemaはsystem.information_schemaに格納されています。

-- テーブルレベルのリネージ: どのテーブルがどのテーブルに依存しているか
SELECT
  source_table_full_name,
  target_table_full_name,
  event_type,         -- READ / WRITE
  created_by,         -- 実行ユーザー
  event_time
FROM system.access.table_lineage
WHERE target_table_full_name = 'prod.gold.daily_revenue'
ORDER BY event_time DESC
LIMIT 50;

-- カラムレベルのリネージ: 特定カラムの算出元を逆引き
SELECT
  source_table_full_name,
  source_column_name,
  target_table_full_name,
  target_column_name,
  event_time
FROM system.access.column_lineage
WHERE target_table_full_name = 'prod.gold.daily_revenue'
  AND target_column_name = 'total_amount'
ORDER BY event_time DESC;

system.access.table_lineageはテーブル単位の依存を、system.access.column_lineageはカラム単位の依存を提供します。 これらのビューへのアクセスにはメタストア管理者またはアカウント管理者の権限が必要です。

REST APIでのリネージ取得

CI/CDパイプラインや外部ガバナンスツールとの統合にはREST APIが最適です。 Unity Catalog APIの/lineage-trackingエンドポイントを使います。

# テーブルの上流リネージを取得
GET /api/2.1/unity-catalog/lineage-tracking/table-lineage
  ?table_name=prod.gold.daily_revenue
  &direction=UPSTREAM

# レスポンス例(簡略化)
{
  "upstreams": [
    {
      "tableInfo": {
        "name": "prod.silver.orders",
        "catalog_name": "prod",
        "schema_name": "silver"
      },
      "notebookInfos": [
        {
          "notebook_id": "12345",
          "workspace_id": "67890"
        }
      ]
    }
  ]
}

# カラムレベルの上流リネージを取得
GET /api/2.1/unity-catalog/lineage-tracking/column-lineage
  ?table_name=prod.gold.daily_revenue
  &column_name=total_amount

REST APIではdirectionパラメータでUPSTREAM(上流)とDOWNSTREAM(下流)を 切り替えられます。影響分析にはDOWNSTREAM、根本原因調査にはUPSTREAMを使います。

カラムレベルリネージの詳細

カラムレベルリネージは、テーブルレベルより粒度の細かい追跡です。 Sparkが実行する論理プラン(Catalyst Optimizer経由)を解析して、 入力カラムから出力カラムへの変換経路を導出します。

対応する変換カラムリネージの挙動
SELECT a, b FROM ...1対1のマッピングとして記録
SELECT a + b AS total FROM ...a, b → total の多対1マッピング
JOIN ON t1.id = t2.id両テーブルのカラムから出力カラムへのマッピング
UDF(ユーザー定義関数)入力カラム → 出力カラム(UDF内部のロジックは不透明)
ウィンドウ関数(RANK, ROW_NUMBER)パーティションキーとオーダーキーからの依存

UDFの内部ロジックはSparkの論理プランでは解析できないため、カラムリネージは 「UDFの入力カラム → UDFの出力カラム」のレベルで記録されます。UDF内部でどのカラムが 実際に使われたかは区別できない点に注意してください。

影響分析の実務手順

影響分析とは、「あるテーブルやカラムを変更した場合、下流のどのテーブル・ダッシュボード・ジョブに影響するか」 を事前に洗い出す作業です。Lineageを使った手順は以下の通りです。

  1. 変更対象のテーブル/カラムを特定する
  2. Data Explorer UIまたはREST APIで下流(DOWNSTREAM)リネージを取得する
  3. 影響を受けるテーブル、ビュー、ダッシュボードの一覧を作成する
  4. 各下流オブジェクトのオーナーに変更を通知する
  5. 変更後にリネージが正しく更新されていることを確認する
-- 影響分析: silver.ordersを変更した場合の下流テーブルを洗い出し
SELECT DISTINCT
  target_table_full_name,
  target_column_name
FROM system.access.column_lineage
WHERE source_table_full_name = 'prod.silver.orders'
  AND source_column_name = 'amount'
ORDER BY target_table_full_name;

-- 結果例:
-- prod.gold.daily_revenue     | total_amount
-- prod.gold.customer_summary  | lifetime_value
-- prod.gold.monthly_report    | gross_sales

この結果から、silver.orders.amountカラムの型変更やリネーム時に 3つのGoldテーブルの再検証が必要だと分かります。

Lineageの制約と注意点

  • Databricks外部からの書き込み(Airflow→S3直接など)はLineageに記録されない
  • Lineage情報の保持期間は1年間(それ以前のデータは自動削除される)
  • JDBC/ODBC経由のクエリはテーブルレベルのみ(カラムレベルリネージは非対応)
  • DLTパイプラインのリネージはDLT UIに別途表示される(2026年時点ではInformation Schemaと統合途上)
  • ストリーミングジョブのリネージはマイクロバッチ単位で記録される

試験で問われるポイント

  • Lineageの追跡粒度: テーブルレベルとカラムレベルの両方が可能
  • Lineage情報の取得方法: UI / Information Schema / REST API の3つ
  • 影響分析の方向: UPSTREAM(根本原因)とDOWNSTREAM(影響範囲)
  • Lineageの自動記録: ETLコードへの追加設定は不要
  • 制約: Databricks外部の処理はLineageに含まれない
  • system.access.table_lineageとsystem.access.column_lineageのビュー名

問題で確認

Data Engineer Professional

問題 1

データエンジニアがSilver層のordersテーブルのamountカラムの型をDECIMAL(10,2)からDECIMAL(18,4)に変更しようとしている。変更前に、このカラムに依存する下流テーブルを網羅的に洗い出したい。最も適切な方法はどれか。

  1. system.access.column_lineageビューでsource_column_name='amount'かつsource_table_full_nameが対象テーブルの行をクエリし、下流のtarget_table_full_nameを一覧化する
  2. grep -rでワークスペース内のすべてのノートブックからテーブル名を検索する
  3. Data Explorer UIでテーブルのスキーマタブを確認する
  4. DESCRIBE HISTORY silver.ordersで変更履歴を取得する

正解: A

column_lineageビューはカラム単位の依存関係を記録しており、特定カラムに依存する下流テーブル・カラムを正確に洗い出せます。grepはコード検索であり実行時の依存関係は把握できません。スキーマタブは当該テーブルの構造表示のみで下流は分かりません。DESCRIBE HISTORYは変更履歴であり下流依存とは無関係です。

よくある質問

Unity Catalog Lineageはどの粒度まで系譜を追跡しますか?

テーブルレベルとカラムレベルの両方を追跡します。テーブルレベルでは「テーブルAがテーブルBに書き込まれた」という依存関係を記録し、カラムレベルでは「テーブルAのcolumn_xがテーブルBのcolumn_yの算出に使われた」という変換経路まで可視化できます。カラムレベルリネージはSpark SQLやDataFrame APIの変換を解析して自動的に構築されます。

Lineage情報のプログラム的な取得方法は?

3つの方法があります。(1) Data Explorer UIのグラフ表示、(2) Information SchemaのTABLE_LINEAGEビューとCOLUMN_LINEAGEビューへのSQLクエリ、(3) Unity Catalog REST APIの/lineage-trackingエンドポイントです。自動化やCI/CDに組み込む場合はREST APIが最も適しており、アドホックな調査にはUIまたはSQLが便利です。

Lineage機能を使うための前提条件は?

Unity Catalogが有効なワークスペースでPremium以上のプランが必要です。Lineageの記録はUnity Catalogに登録されたテーブル・ビューに対して自動的に行われ、追加設定は不要です。ただし、外部ツール(Airflow等)から直接クラウドストレージに書き込む処理はLineageに反映されません。Databricks上で実行されたSparkジョブのみが追跡対象です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.