データリネージとカタログ
何百ものテーブルとパイプラインの中で「この数字はどこから来たのか」「この列を変えたら何が壊れるのか」に即答したい人へ。メタデータを収集し、リネージで依存を追跡し、カタログで発見可能にする原理と、影響分析・ガバナンスへの効かせ方がわかります。
- 1.リネージとは『どの入力データからどの出力データが生成されたか』の依存グラフで、テーブル/カラム/ジョブをノード、生成関係を有向辺とするDAGとして表す。上流から下流へたどれば影響分析、下流から上流へたどれば根本原因追跡になる。
- 2.リネージの採取には静的解析(SQLやジョブ定義をパースして依存を推定、実行前に得られるが動的な参照は苦手)と実行時採取(クエリエンジンやオーケストレータのイベントから実際の読み書きを記録、正確だが実行しないと出ない)の二系統があり、実務では両者を併用する。
- 3.データカタログはテーブルのスキーマ・所有者・鮮度・利用統計といったメタデータを一元化し、検索と信頼判断を可能にする発見層。リネージ・品質・アクセス制御をカタログに束ねることで、ガバナンス(誰が何をどこまで使えるか)と影響分析を同じ基盤で運用できる。
なぜ「どこから来たか」が分析基盤の急所なのか
分析基盤は、生ログやアプリDBの抽出から始まり、何十段ものETL/ELTを経てダッシュボードやMLの特徴量にたどり着きます。テーブルは数百から数千、それらを生むジョブも同数。ここで日常的に起きる二つの問いが、基盤運用の急所です。
- 影響分析(下流方向): 「この生テーブルの列名を変える/このジョブを止めると、どのダッシュボードとどのMLが壊れるか」。
- 根本原因追跡(上流方向): 「経営会議の売上KPIが先週から変だ。この数字はどのテーブル群の、どの変換を経て作られたのか」。
素朴には「SQLを全部grepする」で当たりを付けられますが、変換が多段でエンジンも複数(バッチSQL、Spark、ストリーム処理、BIツール内の計算列)になると破綻します。必要なのは、データ資産どうしの生成・依存関係を機械可読なグラフとして持つことです。これがデータリネージ(data lineage) で、それを検索・信頼判断できる形に束ねる発見層がデータカタログ(data catalog) です。DB内部のクエリ最適化(/database/)が「1つのクエリの中の依存」を扱うのに対し、ここで扱うのは基盤全体をまたぐデータ資産間の依存であり、粒度も寿命も桁が違います。
リネージは、データ資産(テーブル・ビュー・カラム・ファイル・トピック)をノード、「AからBが生成される」という生成関係を有向辺とする有向非巡回グラフ(DAG)です。上流から下流へ辺をたどれば影響範囲、下流から上流へ逆にたどれば由来がわかります。パイプラインのスケジューリングが依存DAGで表せるのと同型で、リネージは実行の依存ではなくデータの依存を写し取ったものだと捉えると整理できます。
採取の二系統:静的解析と実行時採取
リネージの辺をどうやって集めるか。ここが精度と網羅性を左右する要で、大きく二つの流派があります。
静的解析(デザインタイム) は、SQLやジョブ定義といったコードを実行せずにパースし、依存を推定します。INSERT INTO gold.sales SELECT ... FROM silver.orders JOIN silver.customers ... を構文解析すれば、silver.orders と silver.customers から gold.sales への辺、さらに SELECT の各式をたどればどの入力列がどの出力列を作るかというカラムレベルの辺まで導けます。実行を伴わないので全パイプラインを事前に俯瞰でき、CIでの影響分析(マージ前に壊れる下流を検出)に向きます。弱点は、SELECT *・動的生成SQL・UDFの中身・外部関数など、静的には解決できない参照を取りこぼす点です。
実行時採取(ランタイム) は、クエリエンジンやオーケストレータが実際に読み書きしたオブジェクトをイベントとして記録します。エンジンの実行計画やクエリログには「このジョブが実際に読んだテーブルと書いたテーブル」が残るため、動的SQLでも実測として辺が取れます。オープンな系ではOpenLineageのような規約でジョブ開始・完了イベントに入出力データセットを載せて収集します。弱点は、実行されない経路は現れないこと(当日走らなかったジョブの辺は欠ける)と、収集の仕込みが要ることです。
| 観点 | 静的解析 | 実行時採取 |
|---|---|---|
| 取得タイミング | 実行前(コード解析時) | 実行後(走ったジョブから) |
| 網羅性 | 全定義を俯瞰できる | 走った経路のみ現れる |
| 動的参照への強さ | 弱い(動的SQL・SELECT*・UDF内は苦手) | 強い(実測なので実際の読み書きを捕捉) |
| 主な用途 | マージ前の影響分析・CI連携 | 本番の実依存・鮮度・監査 |
両者は排他ではなく、併用が定石です。静的解析で網羅的な設計上の依存を押さえ、実行時採取で実測と動的経路を補う。カラムレベルまで採るかは費用対効果の判断で、テーブルレベルなら安価に全体を覆え、カラムレベルは影響分析の精度を上げる代わりにパース・保持コストが増えます。
カタログ:発見可能性という別の問題
リネージが「関係」を扱うのに対し、カタログが解くのは発見可能性(discoverability) です。数千テーブルの基盤で「顧客の解約率を出したい。どのテーブルを使えばいいか」に答えられなければ、正しいデータがあっても価値になりません。カタログは各データ資産に付随するメタデータを一元化した索引です。集めるメタデータは層で分けて捉えると整理できます。
技術メタデータ : スキーマ(列名・型), パーティション, 物理配置, サイズ
運用メタデータ : 最終更新時刻(鮮度), 行数推移, ジョブ成否, クエリ頻度
ビジネスメタデータ: 論理名・説明, 用語集(glossary)への紐付け, タグ, 機密区分
社会的メタデータ : 所有者(owner), よく使う人, Q&A, 人気度(利用統計)
これらを全文検索とファセット絞り込みに載せることで、「churn を含み、鮮度が24時間以内で、認証済みの(信頼できる)テーブル」を引けるようになります。ここで効くのが社会的メタデータで、利用統計(誰がどれだけ叩いているか)は信頼のシグナルになります。多数のダッシュボードが依存し、著名なアナリストが使っているテーブルは、名前が似た放置テーブルより信頼できる——という判断を、人手のドキュメントに頼らず自動収集した事実で支えるのがモダンなカタログの発想です。
カタログを人手のExcel台帳で維持しようとすると、更新が追いつかず即座に陳腐化します。原理的な解は、各システムから機械可読なメタデータを継続的にプル/プッシュすること。DBのシステムカタログからスキーマを、オーケストレータから実行結果と鮮度を、クエリエンジンのログから利用統計とリネージを、それぞれ自動で吸い上げる。カタログの価値は「どれだけ多くのソースから自動で最新のメタデータを集め続けられるか」でほぼ決まります。
ガバナンスと影響分析:同じグラフを二方向に使う
リネージとカタログを束ねると、ガバナンスと影響分析が同じ基盤の上で回り始めます。両者は同じDAGを逆向きにたどる操作にすぎません。
影響分析(下流方向) は、変更の波及を事前に見積もります。ある列を消す前にリネージを下流へ展開すれば、依存する中間テーブル・ダッシュボード・MLジョブが列挙でき、壊れる範囲を実行前に把握できます。カラムレベルのリネージがあれば「その列だけを参照している資産」に絞れるため、過剰な巻き込みを避けられます。これはCIに組み込む価値が高く、スキーマ変更のPRに対して「この変更は下流の12資産に影響し、うち3つは認証済みダッシュボード」と自動注記できます。
根本原因・監査(上流方向) は、下流の異常や規制対応で由来をたどります。KPIの異常時に上流へ展開すれば、途中のどのジョブが失敗・変質したかを絞り込めます。規制面では、ある個人情報(PII)列がどこまで伝播したかをリネージで全経路たどることが、削除要求(忘れられる権利)や漏洩時の影響範囲特定に直結します。
| 用途 | たどる向き | 問い | 効く前提 |
|---|---|---|---|
| 影響分析 | 上流→下流 | 変えたら何が壊れるか | カラムレベルの辺があるほど精密 |
| 根本原因追跡 | 下流→上流 | この数字はどこ由来か | 多段変換を欠けなくつなぐこと |
| ガバナンス/監査 | 両方向 | 機密データはどこまで広がったか | PII等の機密タグの伝播追跡 |
ガバナンスの肝は、分類(classification)をリネージで伝播させることです。生テーブルの列を「PII・機密」とタグ付けしたら、そこから生成される下流の列も同じ機密度を継ぐべきです。これを人手で維持するのは不可能なので、カラムリネージに沿ってタグを自動伝播させ、下流に現れた機密データにも一貫したアクセス制御・マスキングを効かせます。こうして「誰が・どのデータを・どこまで使えるか」というポリシーを、資産ごとの個別設定ではなく由来に基づいて一元的に運用できます。
リネージを万能の正解表のように扱うのは危険です。静的解析は動的参照を取りこぼし、実行時採取は走らなかった経路を欠き、BIツール内の計算やアプリコードでの加工など計測できない区間では辺が途切れます。切れた辺は「依存がない」ではなく「観測できていない」だけかもしれない。影響分析で「下流ゼロ」と出ても、計測範囲外の消費者がいる前提で、削除前に猶予・告知を置くのが安全です。リネージのカバレッジ(どのエンジン・どの層まで採れているか)自体を管理指標にすべきです。
まとめ
- データリネージは、テーブル/カラム/ジョブをノード、生成関係を有向辺とするDAG。上流→下流で影響分析、下流→上流で根本原因追跡という、同じグラフの二方向利用になる。
- 採取には静的解析(コードをパース、事前に俯瞰できるが動的参照に弱い)と実行時採取(実測、正確だが走った経路のみ)があり、併用が定石。カラムレベルまで採るかは費用対効果で決める。
- データカタログは技術・運用・ビジネス・社会的メタデータを一元化した索引で、解く問題は発見可能性。利用統計などの社会的メタデータは信頼のシグナルとして効く。
- メタデータは人手台帳ではなく各システムから自動で継続収集するのが原理的な解。カタログの価値は自動収集ソースの広さでほぼ決まる。
- リネージ×カタログでガバナンスと影響分析が同一基盤に載る。機密タグをカラムリネージに沿って伝播させ、由来に基づくアクセス制御を実現する。
- リネージは推定と欠測を含む。切れた辺は「依存なし」ではなく「未観測」。カバレッジ自体を管理指標にし、影響分析の結果は保守的に運用する。
データ工学 Article
データリネージとカタログを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
データリネージ
比較で見る軸
難易度: advanced / カテゴリ: データ工学 / タグ数: 6
導入後に効く点
リネージの採取には静的解析(SQLやジョブ定義をパースして依存を推定、実行前に得られるが動的な参照は苦手)と実行時採取(クエリエンジンやオーケストレータのイベントから実際の読み書きを記録、正確だが実行しないと出ない)の二系統があり、実務では両者を併用する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- データ工学
- タグ数
- 6
判断チェックリスト
- 自社の用途が「データリネージ / データカタログ」に近いか確認する。
- 強みである「リネージとは『どの入力データからどの出力データが生成されたか』の依存グラフで、テーブル/カラム/ジョブをノード、生成関係を有向辺とするDAGとして表す。上流から下流へたどれば影響分析、下流から上流へたどれば根本原因追跡になる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。