共用方式為


譜系系統數據表參考

此頁面包含兩個譜系系統資料表的參考資料。 這些系統數據表是以 Unity 目錄 的數據譜系功能為基礎,讓您以程式設計方式查詢譜系數據,以推動決策和報表。 若要存取資料表,必須在您的 system 目錄中啟用這些架構。 欲了解更多資訊,請參閱 啟用系統資料表

Note

這兩個譜系數據表都代表所有讀取/寫入事件的子集,因為擷取譜系並不總是可能的。 只有在可推斷譜系時,才會發出記錄。 譜系限制中所述的數據譜系限制也適用於譜系系統數據表。

表格血統表

表格血緣系統表包含每個在 Unity Catalog 表格或路徑上進行的讀取或寫入事件的記錄。 這包括但不限於作業執行、筆記本運行,以及透過讀取或寫入事件更新的儀表板。

資料表路徑:此系統資料表位於 system.access.table_lineage

數據表譜系架構

資料表譜系系統的表格使用以下模式。

欄位名稱 數據類型 Description Example
account_id 字串 Azure Databricks 帳戶的識別碼。 7af234db-66d7-4db3-bbf0-956098224879
metastore_id 字串 Unity Catalog 中繼存放區的識別碼。 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id 字串 工作區的識別碼 123456789012345
entity_type 字串 與譜系記錄相關聯的實體類型 (如果有的話)。 值為 NOTEBOOKJOBPIPELINEDASHBOARD_V3DBSQL_DASHBOARD (舊版儀表板) 或 DBSQL_QUERYNULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
JOB
entity_id 字串 與譜系記錄相關聯的實體識別碼,或 NULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
417306252667357
entity_run_id 字串 與譜系記錄相關聯之實體的唯一執行 ID 或 NULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
688612062233399
source_table_full_name 字串 識別來源資料表的三段式名稱。 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、、PATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、 或 STREAMING_TABLE TABLE
target_table_full_name 字串 三段式名稱用來識別目標資料表。 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、、PATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、 或 STREAMING_TABLE TABLE
created_by 字串 產生此譜系的使用者。 這可以是 Azure Databricks 使用者名稱、Azure Databricks 服務主體識別碼「System-User」,或 NULL (無法擷取使用者資訊)。 crampton.rods@email.com
event_time 時間戳記 產生譜系時的時間戳記。 時區資訊會記錄在值結尾,+00:00 表示 UTC。 2025-04-20T19:47:21.194+00:00
event_date date 產生譜系的日期。 這是一個分隔欄位。 2025-04-20
record_id 字串 歷程記錄的唯一標識碼。 這個值是自動產生的,無法與任何數據表聯結。 3c5c8eed-87bb-3aa6-8a86-80d00d48299e
event_id 字串 單一歷程事件的唯一標識碼。 如果多行是由相同事件生成的,會共用相同的 event_id。 這個值是自動產生的,無法與任何數據表聯結。 ca123ff3-f3f8-332b-a832-0154a6327353
statement_id 字串 產生歷程事件之查詢語句的唯一標識符。 這是與 查詢記錄系統數據表聯結的外鍵。 只有在從 SQL 倉儲執行查詢時,才會設定此值。 1234526f-a6ac-475c-8601-e8637f8ee039
entity_metadata 結構 關於負責管理世系事件的實體的元數據。 請參閱 實體元數據

欄位溯源表

欄位血緣表不包含沒有來源的事件。 例如,如果您使用明確值插入資料欄,則不會擷取它。 當您讀取某個欄位時,無論您是否寫入輸出,它都會被擷取。

資料表路徑:此系統資料表位於 system.access.column_lineage

欄位譜系架構

欄位譜系系統資料表會使用下列架構:

欄位名稱 數據類型 Description Example
account_id 字串 Azure Databricks 帳戶的識別碼。 7af234db-66d7-4db3-bbf0-956098224879
metastore_id 字串 Unity Catalog 中繼存放區的識別碼。 5a31ba44-bbf4-4174-bf33-e1fa078e6765
workspace_id 字串 工作區的識別碼 123456789012345
entity_type 字串 與譜系記錄相關聯的實體類型 (如果有的話)。 值為 NOTEBOOKJOBPIPELINEDASHBOARD_V3DBSQL_DASHBOARD (舊版儀表板) 或 DBSQL_QUERYNULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
JOB
entity_id 字串 與譜系記錄相關聯的實體識別碼,或 NULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
417306252667357
entity_run_id 字串 與譜系記錄相關聯之實體的唯一執行 ID 或 NULL。
注意:請參閱專欄,以 entity_metadata 取得世系記錄中涉及的所有實體的資訊。
688612062233399
source_table_full_name 字串 識別來源資料表的三段式名稱。 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、、PATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、 或 STREAMING_TABLE TABLE
source_column_name 字串 來源欄的名稱。 date
target_table_full_name 字串 三段式名稱用來識別目標資料表。 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、、PATHVIEWMATERIALIZED_VIEWMETRIC_VIEW、 或 STREAMING_TABLE TABLE
target_column_name 字串 目標欄的名稱。 date
created_by 字串 產生此譜系的使用者。 這可以是 Azure Databricks 使用者名稱、Azure Databricks 服務主體識別碼「System-User」,或 NULL (無法擷取使用者資訊)。 crampton.rods@email.com
event_time 時間戳記 產生譜系時的時間戳記。 時區資訊會記錄在值結尾,+00:00 表示 UTC。 2025-04-20T19:47:21.194+00:00
event_date date 產生譜系的日期。 這是一個分隔欄位。 2025-04-20
record_id 字串 歷程記錄的唯一標識碼。 這個值是自動產生的,無法與任何數據表聯結。 3c5c8eed-87bb-3aa6-8a86-80d00d48299e
event_id 字串 單一歷程事件的唯一標識碼。 如果多行是由相同事件生成的,會共用相同的 event_id。 這個值是自動產生的,無法與任何數據表聯結。 ca123ff3-f3f8-332b-a832-0154a6327353
statement_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 天內查詢執行時間超過一小時的資料表:

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