Unity Catalog のリネージ

データ系列は、Azure Databricks内のデータの取得元と行き先を示します。テーブルにデータを設定するクエリとファイル、テーブルを変換するジョブとノートブック、結果を使用するダッシュボードです。

Unity カタログは、Azure Databricksで実行されるクエリの系列を列レベルまで自動的にキャプチャし、メタストアにアタッチされているすべてのワークスペースにわたって集計します。 Unity Catalog のリネージでは、次のことができます。

  • 影響分析を実行する: テーブルまたは列を変更または削除する前に、そのテーブル、ジョブ、およびそれに依存するダッシュボードを特定します。
  • 根本原因を調査する: ダウンストリーム レポートに予期しない結果が表示された場合は、アップストリーム ソースをトレースして、データが分岐した場所を見つけます。
  • 機密データ フローの追跡: コンプライアンス監査の場合は、規制対象データの発生元、変換方法、およびダウンストリーム資産で使用されるデータを確認します。
  • チーム間の依存関係を理解する: どのチームが依存しているアップストリーム ソースを所有しているか、どのチームがテーブルを使用するかを確認します。

Unity Catalogはまた、Unity Gatewayを通じて管理するモデルサービスや外部モデルプロバイダー(モデルプロバイダーサービス)の系譜も記録します。 各サービスに対して、Unity Catalogはそのサービスを提供するモデルとログに記録される推論テーブルを追跡するため、これらのAI依存関係はテーブルと同じ系譜グラフ内のノードとして表示されます。 トラック モデルサービスおよび提供者系譜を参照してください。

外部系列は、系列グラフをAzure Databricksを超えて拡張します。 Salesforce や MySQL などのアップストリーム ソースと、Tableau や Power BI などのダウンストリーム ツールを Unity カタログの外部アセットとして登録すると、Unity カタログ テーブルと共に 1 つのグラフに表示されます。 外部リネージを参照してください。

Unity Catalogはユーザー定義関数(UDF)の系譜も追跡します。 「 UDF系譜を見る」を参照してください。

以下は系列グラフのサンプル画像です。 ノードは、テーブルとビュー、ML モデルのバージョン、外部アセット、およびファイル パスを表すことができます。

系列の概要。

要件

Unity カタログを使用してデータ系列をキャプチャするには:

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

データ系列を表示するには:

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

コンピューティング要件:

  • Delta テーブル間のストリーミングの系列追跡には、Databricks Runtime 11.3 LTS 以降が必要です。
  • Lakeflow パイプライン ワークロードの列系列の追跡には、Databricks Runtime 13.3 LTS 以降が必要です。

ネットワーク要件:

カタログ エクスプローラーで系列を表示する

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

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックします。

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

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

  4. データ系列のインタラクティブ グラフを表示するには、[See Lineage Graph] (系列グラフの表示) をクリックします。

    既定では、1 つのレベルがグラフに表示されます。 ノード上の プラス記号アイコン アイコンをクリックすると、追加の接続情報があれば表示されます。

  5. 系列グラフの接続エッジのアイコンをクリックして、[ 系列の詳細 ] パネルを開きます。

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

    系列グラフ。

  6. テーブルに関連付けられている資産を表示するには、[ 系列の詳細 ] パネルで資産を選択します。 ノートブック、ジョブ、パイプライン、クエリでフィルター処理できます。

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

    Full menu 列系列。

モデルサービスとプロバイダー系譜を見る

モデルサービスまたは外部モデルプロバイダー(モデルプロバイダーサービス)の系譜を表示するには、カタログエクスプローラーの 系譜 タブを開きます。 詳細は「 トラックモデルサービスおよび提供者の系譜」を参照してください。

ジョブ系列の表示

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

ダッシュボードの系列を表示する

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

UDFの系譜を見る

UDFの系譜を使ってUnityカタログのユーザー定義関数(UDF)がどこで使われているかを追跡し、変更を行う前に共有UDFを修正した際の影響を評価できます。 UDFの系譜は、ジョブ、パイプライン、ノートブック、SQLクエリなどUDFを呼び出すワークロードと、定義でUDFを参照するデータ資産を追跡します。 Unity CatalogはSQL、Python、Scala UDFのUDF系譜を記録しています。

UDFの系譜を見るには:

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックします。
  2. 機能を検索または参照してください。
  3. 「 Lineage 」タブを選択してください。このタブにはUDFに関連するアセットと、それぞれのアセットの Direction、 Type、 Lastアクティビティが一覧表示されます。

以下の例はudf_demo.default.normalize_email UDFの系譜タブを示しています。 下流資産には customer_profiles_view テーブル、関数を呼び出すクエリやノートブック、そしてそれを実行するジョブが含まれます。

カタログエクスプローラーのUDFの系譜タブ。

テーブルやビュー間でデータを変換するために使われるUDFも系譜グラフに記録されます。 以下の例では、customersテーブルとcustomer_profiles_viewビューの間のエッジの系譜詳細パネルに、データを変換するnormalize_email UDFが一覧化されています。

系譜グラフの系譜詳細パネルに示されたUDF。

UDF系譜には、一般的な データ系譜制限に加えて以下の制限があります。

  • Unity CatalogはテーブルレベルでUDFの系譜を記録します。 カラムレベルのUDF系譜は記録されません。
  • SQL UDFは INSERT、 UPDATE、 MERGE 文からキャプチャされません。
  • UDFボディ内で参照されるテーブルや関数については、リネージは取得されません。
  • テーブル値関数、機械学習関数、特徴仕様関数は系譜には含まれません。
  • UDF系譜系のクエリは系譜システムのテーブルではできません。

Genie Code を使用して系列を取得する

Genie Code は、自然言語で系列の質問に回答できます。

Genie Code を使用して系列情報を取得するには:

  1. ワークスペースのサイドバーで、[データ] アイコンをクリック します。カタログ。
  2. カタログを参照または検索し、カタログ名をクリックして、 Genie コードの色アイコンをクリックします。 右上隅の Genie Code アイコン。
  3. Genie Code プロンプトで、次のように入力します。
    • /getTableLineages アップストリームとダウンストリームの依存関係を表示します。
    • /getTableInsights を使用して、ユーザー アクティビティやクエリ パターンなどのメタデータ駆動型の分析情報にアクセスできます。

これらのクエリを使用すると、Genie Code は、"ダウンストリーム系列を表示する" や "このテーブルに最も頻繁にクエリを実行するユーザー" などの質問に回答できます。

Genie Code では、テーブルの系列と分析情報が提供されます。

システム テーブルでデータ リネージをクエリする

系列システム テーブルを使用して、系列データをプログラムでクエリできます。 詳細な手順については、 システム テーブルのリファレンス と 系列システム テーブルのリファレンスを参照してください。

Note

Unity Catalog UDFsのLineageは、系譜システムの表には含まれていません。 「 UDF系譜を見る」を参照してください。

Permissions

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

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

たとえば、userAに対して次のコマンドを実行します。

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

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

次のコマンドを実行して、BROWSEにuserBアクセス許可を付与すると、そのユーザーは、lineage_data スキーマ内の任意のテーブルの系列グラフを表示できます。

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

系列ユーザーには、ノートブック、ジョブ、ダッシュボードなどのワークスペース オブジェクトを表示するための特定のアクセス許可も必要です。 これらのオブジェクトに関する詳細情報は、作成されたワークスペースにのみ表示されます。

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

Retention

カタログ エクスプローラーに表示される系列データは無期限に保持されます。 2024 年 9 月 1 日以降にキャプチャされたすべての系列データを利用できます。 その日付より後に作成されたメタストアの場合、カタログ エクスプローラーの系列の時間範囲ドロップダウンに [すべての時刻 ] オプションが含まれます。 古いメタストアの場合、ドロップダウンには、2024 年 9 月 1 日から始まる すべての使用可能な オプションが含まれています。 既定の選択は 1 年です。

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

制限事項

データ系列には、次の制限があります。 これらの制限は、系列システム テーブルにも適用されます。

  • 2024 年 9 月 1 日より前にキャプチャされた系列データは使用できません。
  • ジョブ API runs submit 要求または spark submit タスクの種類を使用するジョブは、系列ビューでは使用できません。 これらのワークフローのテーブル レベルと列レベルの系列は引き続きキャプチャされますが、ジョブ実行へのリンクはキャプチャされません。
  • 名前が変更されたカタログ、スキーマ、テーブル、ビュー、または列の系列は保持されません。
  • Spark SQL データセットのチェックポイントを使用する場合、系列はキャプチャされません。
  • Unity カタログは、ほとんどの場合、Lakeflow パイプラインから系列をキャプチャしますが、 PRIVATE テーブルを使用するパイプラインではカバレッジが不完全です。
  • 回復性のある分散データセット (RDD) は系列にキャプチャされません。
  • グローバル一時ビューは系列に記録されません。
  • トランザクションは、 読み取りと書き込みが行われるたびに系列を生成します。 系列イベントは、トランザクションがロールバックされた場合でも保持されます。
  • system.information_schema 下にあるテーブルは系列に記録されません。
  • Unity Catalog は、可能な限り列レベルに系列を取り込みます。 ただし、列レベルの系列を取り込むことができない場合があります。 次に示します。
    • ソースまたはターゲットがパスとして参照されている場合、列の系列をキャプチャできません (例: select * from delta."s3://<bucket>/<path>")。 列の系列は、ソースとターゲットの両方がテーブル名で参照されている場合にのみサポートされます (例: select * from <catalog>.<schema>.<table>)。

    • ユーザー定義関数(UDF)の使用は、ソースカラムとターゲットカラム間のマッピングを曖昧にすることがあります。 Unity CatalogはUDFのテーブルレベルの系譜を記録しますが、列レベルの系譜は記録しません。 「 UDF系譜を見る」を参照してください。

その他のリソース