メインコンテンツまでスキップ

Unity Catalog のデータリネージ

データリネージは、Databricks 内のデータの出所と行先を示します。具体的には、どのクエリとファイルがテーブルに入力され、どのジョブとノートブックがデータを変換し、どのダッシュボードが結果を利用するかを示します。

Unity Catalog は、Databricks で実行されるクエリに対して、列レベルまで自動的にリネージをキャプチャし、メタストアにアタッチされているすべてのワークスペース全体で集計します。Unity Catalog のリネージでは、次のことが可能です:

  • 影響分析の実行 : テーブルまたは列を変更または削除する前に、それに依存するダウンストリームのテーブル、ジョブ、およびダッシュボードを特定してください。
  • 根本原因を究明する : ダウンストリームレポートで予期しない結果が表示された場合、アップストリームソースをたどってデータがどこで分岐したかを確認します。
  • 機密データの流れを把握 :コンプライアンス監査のために、規制対象データがどこから発生し、どのように変換され、どのダウンストリームアセットがそれを消費するかを確認します。
  • **チーム間の依存関係を把握する**:依存している上流ソースを所有しているチーム、またはテーブルを利用しているチームを特定します。

外部リネージは、Databricks を超えてリネージグラフを拡張します。Salesforce や MySQL などのアップストリームソース、および Tableau や Power BI などのダウンストリームツールを Unity Catalog の外部アセットとして登録すると、それらは単一のグラフで Unity Catalog テーブルと並んで表示されます。「外部リネージ」を参照してください。

以下の画像はサンプルリネージグラフです。ノードは、テーブルやビュー、機械学習モデルのバージョン、外部アセット、およびファイルパスを表します。

リネージの概要。

必要条件

Unity Catalogを使用してデータリネージをキャプチャするには:

  • テーブルは Unity Catalog メタストアに登録する必要があります。
  • 外部アセット(Unity Catalog メタストアに登録されていないもの)は、Unity Catalog メタストアに登録されている他のセキュリティ保護可能なオブジェクトとの関係を持つように構成された*外部メタデータ*オブジェクトとして、Unity Catalogに追加する必要があります。「外部リネージ」を参照してください。
  • クエリでは、Spark DataFrame (DataFrame を返す Spark SQL 関数など) または Databricks SQL インターフェイス (ノートブックや SQL クエリ エディターなど) を使用する必要があります。

データリネージを表示するには:

  • テーブルまたはビューの親カタログに対して、少なくともBROWSE権限を持っている必要があります。親カタログもワークスペースからアクセスできる必要があります。ワークスペースカタログのバインディングを参照してください。
  • ノートブック、ジョブ、またはダッシュボードには、ワークスペースのアクセス制御設定で定義されているこれらのオブジェクトに対する権限が必要です。詳細については、「パーミッション」を参照してください。
  • Unity Catalog 対応パイプラインの場合は、パイプラインに対する CAN VIEW アクセス許可が必要です。

コンピュートの要件:

  • Deltaテーブル間でのストリーミングのリネージトラッキングにはDatabricks Runtime11.3LTS以上が必要です。
  • Lakeflow Spark宣言型パイプライン ワークロードの列リネージ追跡には、 Databricks Runtime 13.3 LTS以降が必要です。

カタログ エクスプローラーでリネージを表示

カタログエクスプローラを使用してテーブルリネージを表示するには:

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。

  2. テーブルを検索または参照します。

  3. リネージ タブを選択します。リネージパネルが表示され、関連テーブルが表示されます。

  4. データリネージのインタラクティブグラフを表示するには、 リネージグラフを見る をクリックします。

    デフォルトでは、グラフには 1 つのレベルが表示されます。 ノード上の プラス記号アイコン アイコンをクリックすると、使用可能な接続がある場合は、さらに多くの接続が表示されます。

  5. リネージグラフの接続エッジ上のアイコンをクリックすると、 リネージの詳細 パネルが開きます。

    リネージ詳細 パネルには、ソーステーブルやターゲットテーブルなどの接続に関する詳細が表示されます。

    リネージグラフ。

  6. テーブルに関連付けられたアセットを表示するには、 リネージ詳細 パネルで該当するアセットを選択します。ノートブック、ジョブ、パイプライン、クエリでフィルタリングできます。

  7. 列レベルのリネージを表示するには、グラフ内の列をクリックして、関連する列へのリンクを表示します。 例えば、このサンプルグラフのrevenue列をクリックすると、その列が派生した上流の列が表示されます。

    フルメニューコラムリネージ。

ジョブ リネージの表示

ジョブ リネージを表示するには、テーブルの リネージ タブに移動し、 ジョブ を選択し、 ダウンストリーム を選択します。 ジョブ名は、テーブルのコンシューマとして ジョブ名 の下に表示されます。

ダッシュボードの表示 リネージ

ダッシュボードリネージを表示するには、テーブルの リネージ タブに移動し、 ダッシュボード をクリックします。 ダッシュボードは、テーブルのコンシューマとして ダッシュボード名 の下に表示されます。

Genie Codeを使用してリネージを取得する

Genie Codeは、自然言語でリネージに関する質問に回答できます。

Genie Code を使用してリネージ情報を取得するには:

  1. ワークスペースのサイドバーで、「データアイコン。 カタログ 」をクリックします。
  2. カタログを参照または検索し、カタログ名をクリックしてから、アシスタントのカラーアイコン。右上隅の Genie Code アイコン。
  3. Genie Codeのプロンプトに、次の内容を入力します:
    • /getTableLineages アップストリームとダウンストリームの依存関係を表示。
    • /getTableInsights ユーザーアクティビティやクエリパターンなどのメタデータに基づいた知見にアクセスする

これらのクエリにより、Genie Codeは「ダウンストリームリネージを表示する」や「どのユーザーがこのテーブルを最も頻繁にクエリーしますか」といった質問に回答できます。

Genie Code はテーブルのリネージと知識を提供します。

システムテーブルを用いたリネージのクエリー

リネージ システムテーブルを使用して、プログラムによってリネージ データをクエリできます。 詳細な手順については、 「システムテーブル リファレンス」および「リネージ システムテーブル リファレンス」を参照してください。

権限

リネージグラフは、 Unity Catalogと同じ権限モデルを共有しています。Unity Catalog メタストアに登録されているテーブルやその他のデータ オブジェクトは、それらのオブジェクトに対して少なくとも BROWSE のアクセス許可を持つユーザーにのみ表示されます。 ユーザーがテーブルに対する BROWSE 権限または SELECT 権限を持っていない場合、そのリネージを探索できません。

Unity Catalog メタストアにアタッチされているすべてのワークスペース全体でリネージが集約されます。そのため、ユーザーが適切なオブジェクト権限を持っている限り、1つのワークスペースでキャプチャされたリネージは、そのメタストアを共有する他のワークスペースで表示されます。他のワークスペースのノートブックやダッシュボードのようなワークスペースレベルのオブジェクトに関する詳細な情報はマスクされます。制限事項を参照してください。

たとえば、次のコマンドを実行します userA:

SQL
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

userAlineage_data.lineagedemo.menuテーブルのリネージグラフを表示すると、menuテーブルが表示されます。ダウンストリーム lineage_data.lineagedemo.dinner テーブルなど、関連付けられたテーブルに関する情報は表示できません。dinner テーブルは、userAmaskedノードとして表示され、userAは、アクセス権限のないテーブルからグラフを展開してダウンストリームテーブルを表示することはできません。

次のコマンドを実行して、 BROWSE にパーミッションを userBに付与すると、そのユーザーは lineage_data スキーマ内の任意のテーブルのリネージグラフを表示できます。

SQL
GRANT BROWSE on lineage_data to `userB@company.com`;

リネージユーザーは、ノートブック、ジョブ、ダッシュボードなどのワークスペースオブジェクトを表示するには、特定の権限も必要です。これらのオブジェクトに関する詳細な情報は、それらが作成されたワークスペース内でのみ表示されます。

Unity Catalogでのセキュリティ保護可能なオブジェクトへのアクセスの管理の詳細については、Unity Catalogでの特権の管理を参照してください。ノートブック、ジョブ、ダッシュボードなどのワークスペースオブジェクトへのアクセスの管理の詳細については、アクセス制御リストを参照してください。

保持期間

カタログエクスプローラーに表示されるリネージデータは無期限に保持されます。2024年9月1日以降に取得されたすべてのリネージデータが利用可能です。その日付以降に作成されたメタストアの場合、カタログエクスプローラーには、リネージの時間範囲のドロップダウンに すべての時間 オプションが含まれています。古いメタストアの場合、ドロップダウンには、2024年9月1日から**利用可能なすべての**オプションが含まれます。デフォルトの選択は 1年 です。

リネージ システム テーブル ( system.access.table_lineageおよびsystem.access.column_lineage ) は、1 年間のローリング ウィンドウのデータを保持します。 リネージ システムテーブル リファレンスを参照してください。

制限

データリネージには以下の制限があります。 これらの制限は、リネージシステムテーブルにも適用されます。

  • 2024年9月1日以前に取得されたリネージのデータは利用できません。
  • Jobs API runs submit リクエストまたは spark submit タスクタイプを使用するジョブは、リネージビューでは使用できません。これらのワークフローでは、テーブル レベルと列レベルのリネージは引き続きキャプチャされますが、ジョブ実行へのリンクはキャプチャされません。
  • 名前が変更されたカタログ、スキーマ、テーブル、ビュー、または列のリネージは保持されません。
  • Spark SQLデータセットのチェックポイント設定を使用すると、リネージはキャプチャされません。
  • Unity Catalog はほとんどの場合、Lakeflow Spark宣言型パイプラインからリネージをキャプチャします。ただし、PRIVATE テーブルを使用するパイプラインでは、カバレッジが不完全です。
  • Resilient Distributed Datasets (RDD) は、リネージではキャプチャされません。
  • グローバル一時ビューはリネージにキャプチャされません。
  • トランザクションは、読み書きが発生するたびにリネージを出力します。 トランザクションがロールバックされた場合でも、リネージイベントは保持されます。
  • system.information_schema未満のテーブルはリネージにキャプチャされません。
  • Unity Catalog は、リネージを可能な限りカラムレベルまでキャプチャします。 ただし、列レベルのリネージがキャプチャできない場合があります。 これには、次のものが含まれます。
    • ソースまたはターゲットがパスとして参照されている場合、カラムリネージはキャプチャできません(例: select * from delta."s3://<bucket>/<path>")。 カラムリネージは、ソースとターゲットの両方がテーブル名で参照されている場合にのみサポートされます (例: select * from <catalog>.<schema>.<table>)。

    • ユーザー定義関数 (UDF) の使用。これにより、ソースとターゲットカラムの間のマッピングがわかりにくくなる可能性があります。

その他のリソース