次の方法で共有


系列システム テーブル参照

このページには、2 つの系列システム テーブルの参照が含まれています。 これらのシステム テーブルは、Unity Catalog の データ系列機能に基づいて構築されており、プログラムによって系列データを照会して意思決定とレポートを促進できます。 テーブルにアクセスするには、 system カタログでスキーマを有効にする必要があります。 詳細については、「 システム テーブルを有効にする」を参照してください。

Note

どちらの系列テーブルも、常に系列を取得できるわけではないため、すべての読み取り/書き込みイベントのサブセットを表します。 レコードは、系列を推論できる場合にのみ生成されます。 系列の制限に記載されているデータ系列の 制限は、 系列システム テーブルにも適用されます。

テーブル系列テーブル

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

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

テーブル系列スキーマ

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

列名 データの種類 Description Example
account_id 文字列 Azure Databricks アカウントの ID。 7af234db-66d7-4db3-bbf0-956098224879
metastore_id 文字列 Unity Catalog メタストアの ID。 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id 文字列 ワークスペースの ID。 123456789012345
entity_type 文字列 系列レコードに関連付けられているエンティティの種類 (存在する場合)。 値は、 NOTEBOOKJOBPIPELINEDASHBOARD_V3DBSQL_DASHBOARD (レガシ ダッシュボード)、 DBSQL_QUERY、または NULL です。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
JOB
entity_id 文字列 系列レコードに関連付けられているエンティティの ID(NULL)。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
417306252667357
entity_run_id 文字列 系列レコードに関連付けられているエンティティの一意の実行 ID(NULL)。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
688612062233399
source_table_full_name 文字列 ソース テーブルを識別する 3 部構成の名前。 catalog.schema.table
source_table_catalog 文字列 ソース テーブルのカタログ。 catalog
source_table_schema 文字列 ソース テーブルのスキーマ。 schema
source_table_name 文字列 ソース テーブルの名前です。 table
source_path 文字列 ソース テーブルのクラウド ストレージ内の場所。クラウド ストレージから直接読み取る場合はパス。 abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type 文字列 ソースの種類。 値は、 TABLEPATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、または STREAMING_TABLEです。 TABLE
target_table_full_name 文字列 ターゲット テーブルを識別する 3 部構成の名前。 catalog.schema.table
target_table_catalog 文字列 ターゲット テーブルのカタログ。 catalog
target_table_schema 文字列 ターゲット テーブルのスキーマ。 schema
target_table_name 文字列 ターゲット テーブルのファイル名。 table
target_path 文字列 ターゲット テーブルのクラウド ストレージ内の場所。 abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type 文字列 対象の型です。 値は、 TABLEPATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、または STREAMING_TABLEです。 TABLE
created_by 文字列 この系列を生成したユーザー。 これは、Azure Databricks ユーザー名、Azure Databricks サービス プリンシパル ID、"System-User"、またはユーザー情報をキャプチャできない場合は NULL を使用できます。 crampton.rods@email.com
event_time timestamp 系列が生成された日時のタイムスタンプ。 タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 2025-04-20T19:47:21.194+00:00
event_date date 系列が生成された日付。 これはパーティション分割された列です。 2025-04-20
record_id 文字列 系列レコードのユニークID。 この値は自動生成され、どのテーブルとも結合できません。 3c5c8eed-87bb-3aa6-8a86-80d00d48299e
event_id 文字列 1 つの系列イベントの一意の ID。 複数の行が同じイベントによって生成された場合、同じ event_id を共有できます。 この値は自動生成され、どのテーブルとも結合できません。 ca123ff3-f3f8-332b-a832-0154a6327353
statement_id 文字列 系列イベントを生成したクエリ ステートメントの一意の ID。 これは、 クエリ履歴システム テーブルと結合するための外部キーです。 この値は、クエリが SQL ウェアハウスから実行される場合にのみ設定されます。 1234526f-a6ac-475c-8601-e8637f8ee039
entity_metadata 構造体 系列イベントを担当するエンティティに関するメタデータ。 エンティティ メタデータを参照する

列系列テーブル

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

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

列系列スキーマ

列系列システム テーブルでは、次のスキーマが使用されます。

列名 データの種類 Description Example
account_id 文字列 Azure Databricks アカウントの ID。 7af234db-66d7-4db3-bbf0-956098224879
metastore_id 文字列 Unity Catalog メタストアの ID。 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id 文字列 ワークスペースの ID。 123456789012345
entity_type 文字列 系列レコードに関連付けられているエンティティの種類 (存在する場合)。 値は、 NOTEBOOKJOBPIPELINEDASHBOARD_V3DBSQL_DASHBOARD (レガシ ダッシュボード)、 DBSQL_QUERY、または NULL です。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
JOB
entity_id 文字列 系列レコードに関連付けられているエンティティの ID(NULL)。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
417306252667357
entity_run_id 文字列 系列レコードに関連付けられているエンティティの一意の実行 ID(NULL)。
注: 系列レコードに関係するすべてのエンティティについては、 entity_metadata 列を参照してください。
688612062233399
source_table_full_name 文字列 ソース テーブルを識別する 3 部構成の名前。 catalog.schema.table
source_table_catalog 文字列 ソース テーブルのカタログ。 catalog
source_table_schema 文字列 ソース テーブルのスキーマ。 schema
source_table_name 文字列 ソース テーブルの名前です。 table
source_path 文字列 ソース テーブルのクラウド ストレージ内の場所。クラウド ストレージから直接読み取る場合はパス。 abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
source_type 文字列 ソースの種類。 値は、 TABLEPATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、または STREAMING_TABLEです。 TABLE
source_column_name 文字列 変換元列の名前です。 date
target_table_full_name 文字列 ターゲット テーブルを識別する 3 部構成の名前。 catalog.schema.table
target_table_catalog 文字列 ターゲット テーブルのカタログ。 catalog
target_table_schema 文字列 ターゲット テーブルのスキーマ。 schema
target_table_name 文字列 ターゲット テーブルのファイル名。 table
target_path 文字列 ターゲット テーブルのクラウド ストレージ内の場所。 abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1
target_type 文字列 対象の型です。 値は、 TABLEPATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、または STREAMING_TABLEです。 TABLE
target_column_name 文字列 ターゲット列の名前。 date
created_by 文字列 この系列を生成したユーザー。 これは、Azure Databricks ユーザー名、Azure Databricks サービス プリンシパル ID、"System-User"、またはユーザー情報をキャプチャできない場合は NULL を使用できます。 crampton.rods@email.com
event_time timestamp 系列が生成された日時のタイムスタンプ。 タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 2025-04-20T19:47:21.194+00:00
event_date date 系列が生成された日付。 これはパーティション分割された列です。 2025-04-20
record_id 文字列 系列レコードのユニークID。 この値は自動生成され、どのテーブルとも結合できません。 3c5c8eed-87bb-3aa6-8a86-80d00d48299e
event_id 文字列 1 つの系列イベントの一意の ID。 複数の行が同じイベントによって生成された場合、同じ event_id を共有できます。 この値は自動生成され、どのテーブルとも結合できません。 ca123ff3-f3f8-332b-a832-0154a6327353
statement_id 文字列 系列イベントを生成したクエリ ステートメントの一意の ID。 これは、 クエリ履歴システム テーブルと結合するための外部キーです。 この値は、クエリが SQL ウェアハウスから実行される場合にのみ設定されます。 1234526f-a6ac-475c-8601-e8637f8ee039
entity_metadata 構造体 系列イベントを担当するエンティティに関するメタデータ。 エンティティ メタデータを参照する

系列システム テーブルの読み取り

  • イベントが読み取りまたは書き込みのいずれであったかを確認するには、ソースの種類とターゲットの種類を表示できます。
    • 読み取り専用: ソースの種類は null ではありませんが、ターゲットの種類は null です。
    • 書き込み専用: ターゲットの種類は null ではありませんが、ソースの種類は null です。
    • 読み取りおよび書き込み: ソースの種類とターゲットの種類がいずれも null ではありません。

エンティティ メタデータ リファレンス

entity_metadata構造体には、次のスキーマがあります。

job_info:
  job_id: "string"
  job_run_id: "string"
dashboard_id: "string"
legacy_dashboard_id: "string"
notebook_id: "string"
sql_query_id: "string"
dlt_pipeline_info:
  dlt_pipeline_id: "string"
  dlt_update_id: "string"

Azure Databricks は、Lakeflow Spark 宣言型パイプライン、ノートブック、ジョブ、Databricks SQL クエリ、ダッシュボードからの系列イベントを記録します。 他のエンティティからのイベントはサポートされていません。

イベントの種類に応じて、複数の値を設定できます。 たとえば、ノートブック タスクを実行しているジョブでは、 job_infonotebook_idの両方が設定されます。

entity_metadata内のすべての値がnullされている場合は、Azure Databricks エンティティがイベントに関与しなかったことになります。 たとえば、JDBC クエリの結果、またはユーザーが Azure Databricks UI の [サンプル データ] タブをクリックした場合などです。

系列システム テーブルの例

系列をシステム テーブルに記録する方法の例として、クエリの例と、クエリによって作成される系列レコードを次に示します。

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

Note

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

テーブル系列テーブルを使用したテーブルの人気の分析

テーブル系列システム テーブルを使用して、テーブルの人気度を推定できます。 たとえば、次のスニペットは、過去 7 日間に最も頻繁に照会されたテーブルの上位 100 個を取得します。

SELECT
  source_table_full_name,
  COUNT(distinct event_id) AS num_of_queries
FROM
  system.access.table_lineage t
WHERE
  t.event_date > CURRENT_DATE() - INTERVAL 7 DAYS
  AND t.source_table_full_name IS NOT NULL
GROUP BY source_table_full_name
ORDER BY num_of_queries DESC
LIMIT 100;

クエリ履歴システム テーブルと結合して、SQL ウェアハウスまたはサーバーレス コンピューティングで実行されるクエリに関する追加の詳細を取得できます (キャッシュから提供されるものも含まれます (系列システム テーブルは、キャッシュされたクエリ結果のエントリを出力しないことに注意してください)。 たとえば、次のスニペットは、過去 7 日間の実行時間が 1 時間を超えるクエリを含むテーブルを取得します。

SELECT
  t.source_table_full_name,
  COUNT(distinct event_id) AS num_of_queries_over_hour
FROM
  system.query.history h
INNER JOIN system.access.table_lineage t
  ON t.statement_id = h.cache_origin_statement_id
WHERE
  h.total_duration_ms > 3600000
  AND t.event_date > CURRENT_DATE() - INTERVAL 7 DAYS
  AND t.source_table_full_name IS NOT NULL
GROUP BY t.source_table_full_name
ORDER BY num_of_queries_over_hour DESC;

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

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

SELECT * FROM delta.`abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1`;

パスによって参照される外部テーブルの系列レコードに対してクエリを実行する場合は、source_pathまたはtarget_pathではなく、source_table_full_nameまたはtarget_table_full_nameを使用してクエリをフィルター処理する必要があります。 たとえば、次のクエリでは、外部テーブルのすべての系列レコードがプルされます:

SELECT *
FROM system.access.table_lineage
WHERE
  source_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1" OR
  target_path = "abfss://my-container-name@storage-account-name.dfs.core.windows.net/table1";

外部テーブル名に基づいて系列レコードを取得する

系列を検索するためにクラウド ストレージ パスを手動で取得しない場合は、次の関数を使用して、テーブル名を使用して系列データを取得できます。 列の系列のクエリを実行したい場合は、関数内で system.access.table_lineagesystem.access.column_lineage に置換えることもできます。

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)
  )

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

display(getLineageForTable("table_name"))