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

リネージ システムテーブル リファレンス

備考

プレビュー

このシステムテーブルは パブリック プレビュー段階です。 テーブルにアクセスするには、 system カタログでスキーマを有効にする必要があります。 詳細については、「 システムテーブル スキーマを有効にする」を参照してください

この記事では、2つのリネージシステムテーブルの概要を説明します。 これらのシステムテーブルは、Unity Catalog のデータリネージ機能に基づいて構築されているため、リネージデータをプログラムでクエリして、意思決定とレポート作成を促進することができます。

注記

どちらのリネージテーブルも、すべての読み取り/書き込みイベントのサブセットを表しており、常にリネージをキャプチャできるとは限りません。 レコードは、リネージが推論できる場合にのみ出力されます。

テーブル リネージテーブル

テーブル リネージ システムテーブルには、 Unity Catalog テーブルまたはパス上の各読み取りイベントまたは書き込みイベントのレコードが含まれています。 これには、ジョブの実行、ノートブックの実行、および読み取りまたは書き込みイベントで更新されたダッシュボードが含まれますが、これらに限定されません。

テーブルパス :このシステムテーブルは system.access.table_lineageにあります。

Table リネージ スキーマ

テーブル リネージ システムテーブルは、次のスキーマを使用します。

列名

データ型

説明

account_id

string

DatabricksアカウントのID。

7af234db-66d7-4db3-bbf0-956098224879

metastore_id

string

Unity Catalogメタストアの ID。

5a31ba44-bbf4-4174-bf33-e1fa078e6765

workspace_id

string

ワークスペースのID

123456789012345

entity_type

string

リネージ取引が取得されたエンティティのタイプ。 値は、 NOTEBOOKJOBPIPELINEDASHBOARD_V3 (ダッシュボード)、 DBSQL_DASHBOARD (レガシーダッシュボード)、 DBSQL_QUERY、または NULLです。

NOTEBOOK

entity_id

string

リネージ取引が取得されたエンティティの ID。 entity_typeNULLの場合、entity_idNULLです。

  • ノートブック: 23098402394234 - ジョブ: 23098402394234 - Databricks SQL クエリ: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -ダッシュボード: 01ef070d110715f2b6d3061b8bda89ea - レガシーダッシュボード: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -パイプライン: e9cd8a31-de2f-4206-adfa-4f6605d68d88

entity_run_id

string

エンティティの一意の実行を示す ID、または NULL. これは、エンティティの種類ごとに異なります。 - ノートブック: コマンド - ジョブ: ジョブ - Databricks SQL クエリ: query_run_id - ダッシュボード:query_run_id - レガシーダッシュボード:query_run_id - パイプライン: パイプライン entity_typeNULLの場合、entity_run_idNULLです。

  • ノートブック: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - ジョブ: 51090402394234 - Databricks SQL クエリ: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -ダッシュボード: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - レガシーダッシュボード: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 -パイプライン: c5am1e0r-on2f-4206-adfa-4f6605d68d88

source_table_full_name

string

ソース・テーブルを識別するための 3 つの部分からなる名前。

catalog.schema.table

source_table_catalog

string

ソース・テーブルのカタログ。

catalog

source_table_schema

string

ソーステーブルのスキーマ。

schema

source_table_name

string

ソース・テーブルの名前。

table

source_path

string

ソース テーブルのクラウド ストレージ内の場所、またはクラウド ストレージから直接読み取っている場合はパス。

s3://mybucket/table1

source_type

string

ソースのタイプ。 値は TABLEPATHVIEW、または STREAMING_TABLEです。

TABLE

target_table_full_name

string

ターゲット・テーブルを識別するための 3 部構成の名前。

catalog.schema.table

target_table_catalog

string

ターゲット・テーブルのカタログ。

catalog

target_table_schema

string

ターゲットテーブルのスキーマ。

schema

target_table_name

string

ターゲット テーブルの名前。

table

target_path

string

ターゲット テーブルのクラウド ストレージ内の場所。

s3://mybucket/table1

target_type

string

ターゲットのタイプ。 値は TABLEPATHVIEW、または STREAMING TABLEです。

TABLE

created_by

string

このリネージを生成したユーザーです。 これは、 Databricks ユーザー名、 Databricks サービスプリンシパル ID、「System-User」、またはユーザー情報を取得できない場合は NULL にすることができます。

crampton.rods@email.com

event_time

タイムスタンプ

リネージが生成されたときのタイムスタンプ。 タイムゾーン情報は、 +00:00 UTC を表す値の終わりに記録されます。

2023-06-20T19:47:21.194+00:00

event_date

日付

リネージが生成された日付。 これはパーティション分割された列です。

2023-06-20

コラムリネージテーブル

リネージ テーブル列には、ソースがないイベントは含まれません。 たとえば、明示的な値を使用して列に挿入した場合、その列はキャプチャされません。列を読み取ると、出力を書き込むかどうかに関係なく、列がキャプチャされます。カラムリネージはDLTではサポートされていません。

テーブルパス :このシステムテーブルは system.access.column_lineageにあります。

Column リネージ スキーマ

列リネージ システムテーブルは、次のスキーマを使用します。

列名

データ型

説明

account_id

string

DatabricksアカウントのID。

7af234db-66d7-4db3-bbf0-956098224879

metastore_id

string

Unity Catalogメタストアの ID。

5a31ba44-bbf4-4174-bf33-e1fa078e6765

workspace_id

string

ワークスペースのID

123456789012345

entity_type

string

リネージ取引が取得されたエンティティのタイプ。 値は、 NOTEBOOKJOBPIPELINEDASHBOARD_V3 (ダッシュボード)、 DBSQL_DASHBOARD (レガシーダッシュボード)、 DBSQL_QUERY、または NULLです。

NOTEBOOK

entity_id

string

リネージ取引が取得されたエンティティの ID。 entity_typeNULLの場合、entity_idNULLです。

  • ノートブック: 23098402394234 - ジョブ: 23098402394234 - Databricks SQL クエリ: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -ダッシュボード: 01ef070d110715f2b6d3061b8bda89ea - レガシーダッシュボード: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -パイプライン: e9cd8a31-de2f-4206-adfa-4f6605d68d88

entity_run_id

string

エンティティの一意の実行を示す ID、または NULL. これは、エンティティの種類ごとに異なります。 - ノートブック: コマンド - ジョブ: ジョブ - Databricks SQL クエリ: query_run_id - ダッシュボード:query_run_id - レガシーダッシュボード:query_run_id - パイプライン: パイプライン entity_typeNULLの場合、entity_run_idNULLです。

  • ノートブック: e3cr5a10-de6f-6206-fdfa-4f5505d68d55 - ジョブ: 51090402394234 - Databricks SQL クエリ: e9cd8a31-de2f-4206-adfa-4f6605d68d88 -ダッシュボード: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 - レガシーダッシュボード: c3ra5m10-pt6o-6206-mdfa-4f5505d68d55 -パイプライン: c5am1e0r-on2f-4206-adfa-4f6605d68d88

source_table_full_name

string

ソース・テーブルを識別するための 3 つの部分からなる名前。

catalog.schema.table

source_table_catalog

string

ソース・テーブルのカタログ。

catalog

source_table_schema

string

ソーステーブルのスキーマ。

schema

source_table_name

string

ソース・テーブルの名前。

table

source_path

string

ソース テーブルのクラウド ストレージ内の場所、またはクラウド ストレージから直接読み取っている場合はパス。

s3://mybucket/table1

source_type

string

ソースのタイプ。 値は TABLEPATHVIEW、または STREAMING_TABLEです。

TABLE

source_column_name

string

ソース列の名前。

date

target_table_full_name

string

ターゲット・テーブルを識別するための 3 部構成の名前。

catalog.schema.table

target_table_catalog

string

ターゲット・テーブルのカタログ。

catalog

target_table_schema

string

ターゲットテーブルのスキーマ。

schema

target_table_name

string

ターゲット テーブルの名前。

table

target_path

string

ターゲット テーブルのクラウド ストレージ内の場所。

s3://mybucket/table1

target_type

string

ターゲットのタイプ。 値は TABLEPATHVIEW、または STREAMING TABLEです。

TABLE

target_column_name

string

ターゲットカラムの名前。

date

created_by

string

このリネージを生成したユーザーです。 これは、 Databricks ユーザー名、 Databricks サービスプリンシパル ID、「System-User」、またはユーザー情報を取得できない場合は NULL にすることができます。

crampton.rods@email.com

event_time

タイムスタンプ

リネージが生成されたときのタイムスタンプ。 タイムゾーン情報は、 +00:00 UTC を表す値の終わりに記録されます。

2023-06-20T19:47:21.194+00:00

event_date

日付

リネージが生成された日付。 これはパーティション分割された列です。

2023-06-20

Reading リネージ システムテーブル

リネージシステムテーブルを分析する際には、以下の考慮事項に注意してください。

  • entity_typeの場合、Databricks は DLT、ノートブック、ジョブ、Databricks SQL クエリ、およびダッシュボードをサポートします。他のエンティティからのイベントはサポートされていません。
  • entity_typenullと表示されている場合は、イベントに Databricks エンティティが関与していないことを意味します。たとえば、JDBC クエリの結果や、ユーザーが Databricks UI の [ サンプル データ ] タブをクリックした結果である可能性があります。
  • イベントが読み取りか書き込みかを判断するには、ソース・タイプとターゲット・タイプを表示します。
    • 読取り専用: ソース・タイプはnullではありませんが、ターゲット・タイプはnullです。
    • 書込み専用: ターゲット・タイプはnullではありませんが、ソース・タイプはnullです。
    • 読み取りと書き込み: ソースの種類とターゲットの種類が null ではありません。

リネージュシステムテーブルの例

リネージがシステムテーブルに記録される方法の例として、クエリの例と、クエリが作成するリネージレコードを以下に示します。

SQL
CREATE OR REPLACE TABLE car_features
AS SELECT *, in1+in2 as premium_feature_set
FROM car_features_exterior
JOIN car_features_interior
USING(id, model);

system.access.table_lineageのレコードは次のようになります。

entity_type

entity_id

source_table_name

target_table_name

created_by

event_time

NOTEBOOK

27080565267

car_features_exterior

car_features

crampton@email.com

2023-01-25T16:19:58.908+0000

NOTEBOOK

27080565267

car_features_interior

car_features

crampton@email.com

2023-01-25T16:19:58.908+0000

system.access.column_lineageのレコードは次のようになります。

entity_type

entity_id

source_table_name

target_table_name

source_column_name

target_column_name

event_time

NOTEBOOK

27080565267

car_features_interior

car_features

in1

premium_feature_set

2023-01-25T16:19:58.908+0000

NOTEBOOK

27080565267

car_features_interior

car_features

in2

premium_feature_set

2023-01-25T16:19:58.908+0000

注記

上記の例では、すべてのリネージ列が示されているわけではありません。 完全なスキーマについては、上記の リネージスキーマを参照してください。

外部テーブルクエリのトラブルシューティング

クラウド・ストレージ・パスを使用して外部テーブルを参照する場合、関連付けられたリネージレコードにはパス名のみが含まれ、表名は含まれません。 たとえば、このクエリーのリネージレコードには、テーブル名ではなくパス名が含まれます。

SQL
SELECT * FROM delta.`s3://mybucket/table1`;

パスで参照される外部テーブルのリネージレコードをクエリしようとしている場合は、source_table_full_nametarget_table_full_nameの代わりにsource_pathまたはtarget_pathを使用してクエリをフィルタリングする必要があります。たとえば、次のクエリは、外部テーブルのすべてのリネージレコードをプルします。

SQL
SELECT *
FROM system.access.table_lineage
WHERE
source_path = "s3://mybucket/table1" OR
target_path = "s3://mybucket/table1";

例: 外部テーブル名に基づくリネージレコードの取得

リネージを探すために手動でクラウドストレージのパスを取得したくない場合は、以下の機能を使ってテーブル名でリネージデータを取得することができます。 また、列リネージをクエリする場合は、関数で system.access.table_lineagesystem.access.column_lineage に置き換えることもできます。

Python
def getLineageForTable(table_name):
table_path = spark.sql(f"describe detail {table_name}").select("location").head()[0]

df = spark.read.table("system.access.table_lineage")
return df.where(
(df.source_table_full_name == table_name)
| (df.target_table_full_name == table_name)
| (df.source_path == table_path)
| (df.target_path == table_path)
)

次に、次のコマンドを使用して関数を呼び出し、外部テーブルのリネージレコードを表示します。

Python
display(getLineageForTable("table_name"))