譜系系統數據表參考
重要
這項功能處於公開預覽狀態。
本文提供這兩個譜系系統數據表的概觀。 這些系統數據表是以 Unity 目錄 的數據譜系功能為基礎,讓您以程式設計方式查詢譜系數據,以推動決策和報表。
有兩個譜系系統數據表:
system.access.table_lineage
system.access.column_lineage
注意
這兩個譜系數據表都代表所有讀取/寫入事件的子集,因為擷取譜系並不總是可能的。 只有在可以推斷譜系時,才會發出記錄。
數據表譜系數據表
數據表譜系系統數據表包含 Unity 目錄數據表或路徑上每個讀取或寫入事件的記錄。 這包括但不限於作業執行、筆記本執行,以及使用讀取或寫入事件更新的儀錶板。
數據行譜數據表
數據行歷程數據表不包含沒有來源的事件。 例如,如果您使用明確值插入數據行,則不會擷取它。 如果您讀取數據行,則會擷取是否寫入輸出。 差異實時數據表不支援數據行譜系。
譜系系統數據表架構
譜系系統數據表會使用下列架構。 資料表譜系架構不包含 source_column_name
和 target_column_name
。
資料行名稱 | 資料類型 | 描述 | 範例 |
---|---|---|---|
account_id |
字串 | Azure Databricks 帳戶的標識符。 | 7af234db-66d7-4db3-bbf0-956098224879 |
metastore_id |
字串 | Unity 目錄中繼存放區的標識碼。 | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
workspace_id |
字串 | 工作區的標識碼 | 123456789012345 |
entity_type |
字串 | 從中擷取譜系交易的實體類型。 值為 NOTEBOOK 、、JOB 、PIPELINE DBSQL_DASHBOARD 、、 DBSQL_QUERY 或 NULL 。 |
NOTEBOOK |
entity_id |
字串 | 從中擷取譜系交易之實體的標識碼。 如果 entity_type 為 NULL , entity_id 則為 NULL 。 |
*筆記本: 23098402394234 *工作: 23098402394234 * Databricks SQL 查詢: e9cd8a31-de2f-4206-adfa-4f6605d68d88 * Databricks SQL 儀錶板: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *管道: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
entity_run_id |
字串 | 描述實體的唯一執行識別碼,或 NULL 。 這與每個實體類型不同:* 筆記本:command_run_id * 作業:job_run_id * Databricks SQL 查詢:query_run_id * Databricks SQL 儀錶板:query_run_id * 管線:pipeline_update_id 如果 entity_type 為 NULL , entity_run_id 則為 NULL 。 |
*筆記本: 23098402394234 *工作: 23098402394234 * Databricks SQL 查詢: e9cd8a31-de2f-4206-adfa-4f6605d68d88 * Databricks SQL 儀錶板: e9cd8a31-de2f-4206-adfa-4f6605d68d88 *管道: e9cd8a31-de2f-4206-adfa-4f6605d68d88 |
source_table_full_name |
字串 | 識別源數據表的三部分名稱。 | catalog.schema.table |
source_table_catalog |
字串 | 源數據表的目錄。 | catalog |
source_table_schema |
字串 | 源數據表的架構。 | catalog.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 |
字串 | 識別目標數據表的三部分名稱。 | catalog.schema.table |
target_table_catalog |
字串 | 目標數據表的目錄。 | catalog |
target_table_schema |
字串 | 目標數據表的架構。 | catalog.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 服務主體標識碼“System-User”,或 NULL 無法擷取用戶資訊。 |
crampton.rods@email.com |
event_time |
timestamp | 產生譜系時的時間戳。 | 2023-06-20T19:47:21.194+0000 |
event_date |
date | 產生譜系的日期。 這是分割的數據行。 | 2023-06-20 |
讀取譜系系統數據表
在分析譜系系統數據表時,請注意下列考慮:
entity_type
針對,Azure Databricks 支援 Delta Live Tables、Notebook、作業、Databricks SQL 查詢和儀錶板。 不支援來自其他實體的事件。- 如果您將 視為
entity_type
null
,表示事件中未涉及任何 Azure Databricks 實體。 例如,可能是 JDBC 查詢的結果,或使用者按兩下 Azure Databricks UI 中的 [範例數據 ] 索引標籤。 - 若要判斷事件是否為讀取或寫入,您可以檢視來源類型和目標類型。
- 唯讀:來源類型不是 Null,但目標類型為 Null。
- 唯寫:目標類型不是 Null,但來源類型為 Null。
- 讀取和寫入:來源類型和目標類型不是 Null。
譜系系統數據表範例
在系統數據表中記錄譜系的範例中,以下是查詢所建立歷程記錄的範例查詢,後面接著歷程記錄:
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
或 而非 source_table_full_name
或 target_path
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"))
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應