このページには、2 つの系列システム テーブルの参照が含まれています。 これらのシステム テーブルは、Unity Catalog の データ系列機能に基づいて構築されており、プログラムによって系列データを照会して意思決定とレポートを促進できます。 テーブルにアクセスするには、 system
カタログでスキーマを有効にする必要があります。 詳細については、「 システム テーブルへのアクセス」を参照してください。
注
どちらの系列テーブルも、常に系列を取得できるわけではないため、すべての読み取り/書き込みイベントのサブセットを表します。 レコードは、系列を推論できる場合にのみ生成されます。 系列の制限に記載されているデータ系列の 制限は、 系列システム テーブルにも適用されます。
テーブル系列テーブル
テーブル系列システム テーブルには、Unity Catalog テーブルまたはパスの読み取り/書き込みイベントごとに 1 つのレコードが含まれています。 これには、ジョブの実行、ノートブックの実行、読み取りまたは書き込みイベントで更新されたダッシュボードが含まれますが、これらに限定されません。
テーブル パス: このシステム テーブルは system.access.table_lineage
にあります。
テーブル系列スキーマ
テーブル系列システム テーブルでは、次のスキーマを使用します。
列名 | データ型 | 説明 | 例 |
---|---|---|---|
account_id |
ひも | Azure Databricks アカウントの ID。 | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
ひも | Unity Catalog メタストアの ID。 | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
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 |
ひも | ソースの種類。 値は TABLE 、PATH 、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 |
ひも | 対象の型です。 値は TABLE 、PATH 、VIEW 、または STREAMING TABLE です。 |
TABLE |
created_by |
ひも | この系列を生成したユーザー。 これは、Azure Databricks ユーザー名、Azure Databricks サービス プリンシパル ID、"System-User"、またはユーザー情報をキャプチャできない場合は NULL を使用できます。 |
crampton.rods@email.com |
event_time |
タイムスタンプ(時刻印) | 系列が生成された日時のタイムスタンプ。 タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 |
2025-04-20T19:47:21.194+00:00 |
event_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 |
struct | 系列イベントを担当するエンティティに関するメタデータ。 | エンティティ メタデータを参照する |
注
列 entity_type
、 entity_run_id
、および entity_id
は非推奨になりました。 系列レコードに関係するエンティティの完全な図については、 entity_metadata
列を使用します。
列系列テーブル
列系列テーブルには、ソースのないイベントは含まれません。 たとえば、明示的な値を使用して列に挿入した場合はキャプチャされません。 列を読み取ると、出力を書き込むかどうかに関係なくキャプチャされます。
テーブル パス: このシステム テーブルは system.access.column_lineage
にあります。
列系列スキーマ
列系列システム テーブルでは、次のスキーマが使用されます。
列名 | データ型 | 説明 | 例 |
---|---|---|---|
account_id |
ひも | Azure Databricks アカウントの ID。 | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
ひも | Unity Catalog メタストアの ID。 | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
ひも | ワークスペースの ID。 | 123456789012345 |
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 |
ひも | ソースの種類。 値は TABLE 、PATH 、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 |
ひも | 対象の型です。 値は TABLE 、PATH 、VIEW 、または STREAMING TABLE です。 |
TABLE |
target_column_name |
ひも | ターゲット列の名前。 | date |
created_by |
ひも | この系列を生成したユーザー。 これは、Azure Databricks ユーザー名、Azure Databricks サービス プリンシパル ID、"System-User"、またはユーザー情報をキャプチャできない場合は NULL を使用できます。 |
crampton.rods@email.com |
event_time |
タイムスタンプ(時刻印) | 系列が生成された日時のタイムスタンプ。 タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 |
2025-04-20T19:47:21.194+00:00 |
event_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 |
struct | 系列イベントを担当するエンティティに関するメタデータ。 | エンティティ メタデータを参照する |
注
列 entity_type
、 entity_run_id
、および entity_id
は非推奨になりました。 系列レコードに関係するエンティティの完全な図については、 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 宣言パイプライン、ノートブック、ジョブ、Databricks SQL クエリ、ダッシュボードからの系列イベントを記録します。 他のエンティティからのイベントはサポートされていません。
イベントの種類に応じて、複数の値を設定できます。 たとえば、ノートブック タスクを実行しているジョブでは、 job_info
と notebook_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 |
注
上記の例では、すべての系列列が示されているわけではありません。 完全なスキーマについては、上記の系列スキーマを参照してください。
外部テーブル クエリのトラブルシューティング
クラウド ストレージ パスを使用して外部テーブルを参照する場合、関連付けられている系列レコードには、テーブル名ではなくパス名のみが含まれます。 たとえば、このクエリの系列レコードには、テーブル名ではなくパス名が含まれます:
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_lineage
を system.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"))