外部リネージ
Unity Catalog は Databricks で実行されるクエリ間でランタイム データリネージを自動的にキャプチャします。しかし、Databricks の外部で実行されるワークロードがある場合があります(たとえば、ファーストマイル ETL またはラストマイル BI)。Unity Catalogでは、自動的にキャプチャされるDatabricksのデータリネージを補完するために外部リネージメタデータを追加でき、Unity Catalogでエンドツーエンドのリネージビューを提供します。これは、データがUnity Catalog に取り込まれる前にどこから来たのか(例: Salesforce や MySQL)を把握したい場合や、Unity Catalog の外部でデータが消費される場合(例: Tableau や Power BI)に役立ちます。
2つの方法で外部リネージを追加できます:
- Catalog Explorer UI、外部メタデータおよび外部リネージ APIs、または Databricks SDK for Python を手動で使用します。
- 自動的に、LakeFlow Connectマネージド インジェスト パイプラインを使用して、ソーステーブルからUnity Catalogの宛先テーブルへのソースリネージが記録されます。「管理対象の取り込みパイプラインのソースデータリネージを追跡」を参照してください。
次のリネージグラフは、MySQLとPostgreSQLにある2つの外部テーブルが、Unity CatalogのマネージドテーブルとしてDatabricksに取り込まれ、列がrelease_dateの列に変換され、その後、外部レポートで消費されたものを示しています。

Databricksのデータリネージに関する一般的な情報については、「Unity Catalogのリネージ」を参照してください。
必要条件
Unity Catalogに外部リネージメタデータを追加するには、特定のタスクに応じて、次の権限が必要です。
- Unity Catalog で外部メタデータセキュリティ保護可能なオブジェクトを作成するには、メタストアに対する
CREATE EXTERNAL METADATA権限が必要です。 - 外部メタデータオブジェクトと他の Unity Catalog オブジェクトとの間のリネージ関係を指定するには、外部メタデータオブジェクトに対する
MODIFY権限が必要です。 - Unity Catalogオブジェクトへのダウンストリームリネージ関係を指定するには、オブジェクトに対する読み取り権限 (テーブルに対する
SELECTなど) が必要です。 - Unity Catalogオブジェクトへのアップストリームリネージ関係を指定するには、オブジェクトに対する書き込み権限 (テーブルに対する
MODIFYなど) が必要です。
外部リネージメタデータを追加します
外部リネージメタデータを追加するには:
-
Unity Catalog に外部メタデータのセキュリティ保護可能なオブジェクトを作成します。
このオブジェクトは、Tableau のダッシュボードなど、外部システム内のエンティティを表します。
-
外部メタデータオブジェクトと別の Unity Catalog オブジェクト(テーブル、モデル、パス、その他の外部メタデータオブジェクトなど)との間にリネージ関係を設定します。
リネージ関係を作成すると、外部メタデータオブジェクトがリネージグラフビューに表示されます。
Catalog Explorer UI を使用して、外部メタデータオブジェクトを作成し、リネージリレーションシップを設定できます。既存のリネージグラフから始めるには、グラフの右上隅にある 外部リネージを作成 をクリックします。次のセクションで説明されているように、カタログエクスプローラ の External データ セクションから開始することもできます。
外部メタデータオブジェクトの作成
Catalog Explorer、External Metadata API、または Databricks SDK for Python を使用して、外部メタデータオブジェクトを作成できます。
カタログエクスプローラを使用して外部メタデータオブジェクトを作成するには:
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[外部データ >] ボタンをクリックし、 [外部メタデータ] タブに移動して、 [外部メタデータの作成] を クリックします。
-
メタデータの詳細を指定します。
必須:
- [ 名前 ]:Databricks ユーザーがリネージで何を見ているかを理解するのに役立つ、人間にとってわかりやすい名称を入力してください。外部メタデータオブジェクトはUnity Catalogのセキュリティ保護可能なオブジェクトであるため、名前は Unity Catalog のオブジェクト命名規則に従う必要があります。セキュリティ保護可能なオブジェクトの命名要件を参照してください。
- システムタイプ : 一般的な外部データと BI システムのリストから選択します。目的のものが見つからない場合は、[ カスタム ] を選択します。
- エンティティタイプ : 「テーブル」や「ダッシュボード」などのオブジェクトのタイプを入力します。
随意:
- URL : リネージ グラフ ビューアーが外部アセット (Tableau ダッシュボードなど) にクリックスルーできるようにする場合は、オブジェクトの URL を入力します。
- 説明
アドバンスド:
- 列 : この外部オブジェクトから別の Unity Catalog オブジェクトへの列レベルのマッピングを行う場合は、列名を入力します。 UI を選択して一度に 1 つずつ入力するか、 テキスト入力 を選択して 1 つのテキスト ボックスにカンマ区切りのリストを入力します。
- プロパティ : リネージで追跡する他のプロパティがある場合は、それらを JSON キーと値のペアとして入力します。 UI を使用して、各キーと値のペアを入力するか、完全な JSON オブジェクトを入力できます。
-
作成 をクリックします。
ダイアログでは、外部メタデータオブジェクトを表示するか、オブジェクトのリネージ関係を作成するかを選択できます。
外部メタデータオブジェクトをプログラムで作成するには、Databricks SDK for Python または REST API を使用します。以下の例では、Salesforce テーブルを表す外部メタデータオブジェクトを作成します。
- Python SDK
- REST API
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import ExternalMetadata, SystemType
w = WorkspaceClient()
external_metadata = w.external_metadata.create_external_metadata(
external_metadata=ExternalMetadata(
name="salesforce_accounts",
system_type=SystemType.SALESFORCE,
entity_type="table",
url="https://my-org.salesforce.com/lightning/o/Account/list",
description="Salesforce Account records ingested into Databricks.",
)
)
パラメーターの完全なリストについては、 External Metadata API を参照してください。
<workspace-url> をワークスペースの URL に置き換えます。この例では、DATABRICKS_TOKEN 環境変数が Databricks 個人用アクセストークンに設定されていることを前提としています。
curl -X POST \
https://<workspace-url>/api/2.0/lineage-tracking/external-metadata \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "salesforce_accounts",
"system_type": "SALESFORCE",
"entity_type": "table",
"url": "https://my-org.salesforce.com/lightning/o/Account/list",
"description": "Salesforce Account records ingested into Databricks."
}'
リクエストフィールドの完全なリストについては、External Metadata APIを参照してください。
リネージ関係の作成
リネージ関係は、Catalog Explorer、外部リネージAPI 、またはDatabricksSDK Pythonを使用して作成できます。
外部メタデータ オブジェクトと他の Unity Catalog オブジェクトとの間の関係を追加するには、次のようにします。
-
上記のプロンプトに従うか、カタログエクスプローラーで既存の外部メタデータオブジェクトを見つけます。
カタログ をクリックします
- 外部データ> ボタンをクリックします
- 外部メタデータ タブに移動し、外部メタデータオブジェクトを選択します。
-
リネージ関係の作成 をクリックします。
-
上流のリレーションシップとダウンストリームのどちらのリレーションシップを作成するかを選択します。
-
関係を作成する オブジェクトタイプ を入力します。
- テーブル : 検索ダイアログを使用してテーブルを選択します。
- モデル : 検索ダイアログを使用してモデルを選択し、モデルのバージョンを選択します。
- * Path * :ボリュームまたは外部ロケーションの場合は、パスを入力します。
- 外部メタデータ : ドロップダウンメニューから外部メタデータオブジェクトを選択します。
-
(オプション) 詳細設定 をクリックして、以下を追加します。
- 外部メタデータオブジェクトとソースオブジェクトまたはターゲットオブジェクトとの間の列マッピング。
- JSON キーと値のペアとしてのその他のメタデータ。たとえば、これらを使用して、外部メタデータオブジェクトからテーブルを作成したクエリのテキストや、関係を生成した外部ワークフローを説明する注釈を入力できます。
-
作成 をクリックします。
関連オブジェクトの「リネージ」タブで外部リネージ関係を確認できるようになりました。
リネージ関係をプログラムで作成するには、Databricks SDK for Python または REST API を使用します。source オブジェクトと target オブジェクトを指定します。各オブジェクトは、Unity Catalog のテーブル、パス、モデルバージョン、または外部メタデータオブジェクトです。以下の例では、Unity Catalog テーブルから salesforce_accounts 外部メタデータオブジェクトへの関係を作成し、テーブルの id 列を外部オブジェクトの external_id 列にマッピングします。
- Python SDK
- REST API
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
CreateRequestExternalLineage,
ExternalLineageObject,
ExternalLineageTable,
ExternalLineageExternalMetadata,
ColumnRelationship,
)
w = WorkspaceClient()
relationship = w.external_lineage.create_external_lineage_relationship(
external_lineage_relationship=CreateRequestExternalLineage(
source=ExternalLineageObject(
table=ExternalLineageTable(name="main.sales.accounts")
),
target=ExternalLineageObject(
external_metadata=ExternalLineageExternalMetadata(
name="salesforce_accounts"
)
),
columns=[ColumnRelationship(source="id", target="external_id")],
)
)
パラメーターの完全なリストについては、External Lineage APIを参照してください。
<workspace-url> をワークスペースの URL に置き換えます。この例では、DATABRICKS_TOKEN 環境変数が Databricks 個人用アクセストークンに設定されていることを前提としています。
curl -X POST \
https://<workspace-url>/api/2.0/lineage-tracking/external-lineage \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source": { "table": { "name": "main.sales.accounts" } },
"target": { "external_metadata": { "name": "salesforce_accounts" } },
"columns": [{ "source": "id", "target": "external_id" }]
}'
リクエストフィールドの完全なリストについては、外部リネージAPIを参照してください。
外部リネージ関係のモデル化
外部のリネージを手動で追加する場合は、より複雑な関係をモデル化するために、次のパターンを使用してください。
- **2つのUnity Catalogテーブルを接続する**:両方ともUnity Catalogに登録されている2つのテーブル間のリネージ関係を指定するには、それらの間に外部メタデータオブジェクトを作成します。リネージグラフで接続された状態で表示されるように、外部メタデータオブジェクトのアップストリームとしてテーブルを1つ、もう1つをダウンストリームとして指定してください。
- 複数のリネージレベルを追加する :Databricksに入る前に複数のシステムを通過するデータに注釈を付けるには、複数の外部メタデータオブジェクトを作成し、それらのそれぞれの間で外部リネージ関係を設定します。
- 列レベルのリネージを追加 :外部メタデータオブジェクトを作成する際に、列名を指定します。その後、リネージ関係を設定する際に、ソースカラムとターゲットカラムをマッピングします。
制限事項:
- 外部リネージは、リネージシステムテーブル(
system.access.table_lineageとsystem.access.column_lineage)には記録されません。 - 1つのメタストアあたり、最大10,000個の外部メタデータオブジェクトおよび100,000個の外部リネージ関係を作成できます。「リソース制限」を参照してください。