資料血統會顯示 Azure Databricks 中的資料從何而來以及流向何處:哪些查詢與檔案將資料填入資料表、哪些作業與筆記本會加以轉換,以及哪些儀表板會取用結果。
Unity Catalog 會自動擷取在 Azure Databricks 上執行之查詢的資料譜系,精確到欄位層級,並彙總所有已連結至中繼存放區的工作區中的這些譜系資料。 Unity 目錄中的 Lineage 讓你能:
- 進行影響分析:在更改或刪除資料表或欄位前,先識別依賴該資料表的下游資料表、工作與儀表板。
- 調查根本原因:當下游報告顯示出意外結果時,追蹤上游來源以找出數據分歧的地點。
- 追蹤敏感資料流:合規稽核時,了解受規範資料的來源、如何轉換,以及哪些下游資產會消耗這些資料。
- 了解跨團隊相依關係:找出哪些團隊擁有你依賴的上游來源,或哪些團隊會消耗你的資料表。
Unity 目錄同時記錄你透過 Unity Gateway 管理的模型服務及外部模型提供者(模型提供者服務)的血統。 對於每個服務,Unity Catalog 會追蹤它所服務的模型和它所記錄的推論表,因此這些 AI 相依關係會以與你的資料表同一譜系圖中的節點出現。 請參閱追蹤模型服務和供應商沿襲。
外部血統將血緣圖延伸至 Azure Databricks 之外。 將 Salesforce 或 MySQL 等上游來源,以及 Tableau 或 Power BI 等下游工具,在 Unity Catalog 中註冊為外部資產後,它們就會在單一圖譜中與你的 Unity Catalog 資料表一同顯示。 參見 外部血統。
Unity 目錄也追蹤使用者定義函數(UDF)的沿革。 參見 查看UDF血統。
下圖是範例譜系圖。 節點可以代表表格與檢視、機器學習模型版本、外部資產及檔案路徑。
需求
若要使用 Unity 目錄擷取數據譜系:
- 數據表必須在 Unity 目錄中繼存放區中註冊。
- 外部資產(未在 Unity 目錄中繼存放區中註冊的資產)必須新增為 Unity 目錄中的 外部元數據物件,並設定為與 Unity 目錄中繼存放區中註冊的其他可保護實體對象有關聯。 參見 外部血統。
- 查詢必須使用 Spark DataFrame(例如會傳回 DataFrame 的 Spark SQL 函式)或 Databricks SQL 介面,例如筆記本或 SQL 查詢編輯器。
若要檢視數據譜系:
- 您必須至少擁有
BROWSE資料表或檢視表之父目錄的許可權。 父目錄也必須可從工作區存取。 請參見 工作區與目錄的綁定。 - 針對筆記本、作業或儀錶板,您必須具有工作區中訪問控制設定所定義這些對象的許可權。 如需詳細資料,請參閱權限。
- 針對 已啟用 Unity 目錄的流程,您必須具有該流程的 CAN VIEW 權限。
計算需求:
- Delta 表之間的串流系譜追蹤需要 Databricks Runtime 11.3 LTS 或更新版本。
- Lakeflow 管線工作負載的欄級資料譜系追蹤需要 Databricks Runtime 13.3 LTS 或更新版本。
網路需求:
- 你可能需要更新你的出站防火牆規則,允許在 Azure Databricks 控制平面中連接到 Event Hubs 端點。 通常如果你的 Azure Databricks 工作區部署在自己的 VNet(也稱為 VNet 注入)中,這點就適用。 若要取得工作區區域的事件中樞端點,請參閱 Metastore、工件 Blob 儲存體、系統資料表儲存體、日誌 Blob 儲存體和事件中樞端點 IP 位址。 關於為Azure Databricks設定使用者自訂路由(UDR)的資訊,請參見User-Defined route settings for Azure Databricks。
在目錄探索器中查看血統
若要使用 Catalog Explorer 來檢視資料表譜系:
在你的Azure Databricks工作區,點選
Catalog。
搜尋或瀏覽您的資料表。
選取 [歷程] 索引標籤 。譜系面板隨即出現,並顯示相關的數據表。
若要檢視資料譜系的互動式圖表,請按下 [查看譜系圖]。
依預設,圖表中會顯示一個層級。 點擊節點上的
圖示,以揭示更多可用的連線。點擊血統圖中連接邊上的圖示即可開啟 血統詳情 面板。
血統細節面板顯示連線的詳細資訊,包括來源表與目標資料表。
要查看與表格相關的資產,請在 血統細節 面板中選擇該資產。 你可以依筆記本、工作、流程和查詢來篩選。
若要檢視數據行層級譜系,請按兩下圖表中的數據行以顯示相關數據行的連結。 例如,點擊
revenue此範例圖中的欄位,即可顯示該欄位的上游欄位:
查看模型服務與提供者血統
若要查看模型服務或外部模型提供者(模型提供者服務)的血統,請在目錄總管中開啟其 血統 分頁。 詳情請參閱 追蹤模式服務與提供者血統。
檢視作業譜系
若要檢視作業血統,請移至資料表的 [血統] 頁籤,選取 [作業],然後選取 [下游]。 作業名稱會顯示在 [作業名稱 ] 底下,做為數據表的取用者。
檢視儀錶板譜系
若要查看儀錶板譜系,請移至資料表的 譜系 標籤,然後點擊 儀錶板。 儀錶板會顯示在 [ 儀錶板名稱 ] 底下,作為數據表的取用者。
查看UDF血統
使用 UDF 血統追蹤 Unity 目錄中使用者定義函式(UDF)的使用位置,以便在做出任何變更前評估修改共享 UDF 的影響。 UDF 血統追蹤呼叫 UDF 的工作負載,例如工作、管線、筆記本或 SQL 查詢,以及在定義中提及 UDF 的資料資產。 Unity 目錄涵蓋 SQL、Python 及 Scala UDF 的 UDF 血統。
若要檢視 UDF 的沿襲:
- 在你的Azure Databricks工作區,點選
Catalog。
- 搜尋或瀏覽以尋找該功能。
- 選擇「 血統 」標籤。該標籤列出與 UDF 相關的資產,以及每個資產的 方向、 類型和 最後活動。
以下範例展示了 UDF 的udf_demo.default.normalize_email血統分頁。 下游資產包括 customer_profiles_view 資料表、呼叫函式的查詢與筆記本,以及執行該函式的工作。
用於在資料表或視圖間轉換資料的 UDF 也會被捕捉在系譜圖中。 在以下範例中,位於 customers資料表與 檢視表之間邊的 customer_profiles_view 面板會列出可轉換資料的 normalize_email UDF:
UDF 血統除了一般資料 血緣限制外,還有以下限制:
- Unity Catalog 會在資料表層級擷取 UDF 血緣。 欄位層級的 UDF 血統不會被擷取。
- SQL UDF 不會從
INSERT、UPDATE和MERGE語句中擷取。 - UDF 主體中引用的資料表或函式不會擷取 lineage。
- 表值函式、機器學習函數及特徵規格函式不會被捕捉在譜系中。
- 你無法使用血統系統資料表查詢 UDF 血統。
用精靈代碼取得血統
Genie Code 可以用自然語言回答血統問題。
要用精靈密碼取得血統資訊:
- 在工作區提要欄位中,按兩下
目錄。
- 瀏覽或搜尋目錄,點選目錄名稱,然後點擊
右上角有精靈密碼圖示。
- 在精靈密碼提示時,輸入:
-
/getTableLineages以檢視上游與下游的相依關係。 -
/getTableInsights以取得以元資料驅動的洞察,例如使用者活動與查詢模式。
-
這些查詢讓 Genie Code 能夠回答像是「顯示下游血統」或「誰最常查詢此表」等問題。
帶有系統資料表的查詢沿革
您可以使用譜系系統數據表,以程式設計方式查詢譜系數據。 詳細說明請參閱 系統表參考 及 血統系統表參考。
Note
Unity Catalog UDF 的 lineage 無法在 lineage 系統資料表中取得。 參見 查看UDF血統。
權限
譜系圖與 Unity Catalog 使用相同的 權限模型。 在 Unity 目錄中繼存放區中註冊的數據表和其他數據物件,只有至少具有這些物件 BROWSE 許可權的使用者才能看見。 如果使用者在數據表上沒有 BROWSE 或 SELECT 許可權,他們就無法探索其譜系。
資料沿襲會彙整至所有連結至 Unity Catalog 中繼存放區的工作區,因此,只要使用者具備足夠的物件權限,在一個工作區中擷取的沿襲資料,也能在任何其他共用該中繼存放區的工作區中查看。 其他工作區中關於工作區層級物件如筆記本和儀表板的詳細資訊則被遮罩。 請參閱限制。
例如,針對 userA執行下列命令:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
當 userA 查看 lineage_data.lineagedemo.menu 資料表的沿襲圖時,會看到 menu 資料表。 他們無法看到相關資料表的資訊,例如下游 lineage_data.lineagedemo.dinner 資料表。 對 dinner 而言,masked 資料表會顯示為 userA 節點,且 userA 無法展開圖表,以顯示其無權存取之資料表的下游資料表。
如果您執行下列命令來將BROWSE權限授與userB,該使用者可以檢視任何位於lineage_data架構中的資料表的譜系圖:
GRANT BROWSE on lineage_data to `userB@company.com`;
Lineage 使用者也必須擁有特定權限來查看工作空間物件,如筆記本、工作與儀表板。 這些物件的詳細資訊僅在它們建立的工作區中可見。
如需有關管理 Unity Catalog 中可安全存取物件的詳細資訊,請參閱 在 Unity Catalog 中管理許可權。 如需有關管理工作區物件 (例如筆記本、工作和儀表板) 存取權的詳細資訊,請參閱存取控制清單。
保留
目錄探索器中顯示的血統資料會被永久保留。 2024年9月1日之後擷取的所有血統資料皆可取得。 對於在該日期之後建立的中繼存放區,Catalog Explorer 會在資料譜系時間範圍下拉式選單中提供 All time 選項。 對於較舊的元商店,下拉選單包含從 2024 年 9 月 1 日起的 「全部可用 」選項。 預設選擇是 一年。
血統系統表(system.access.table_lineage 和 system.access.column_lineage)保留一個滾動的一年資料視窗。 詳見 血統系統表格參考資料。
Limitations
數據譜系具有下列限制。 這些限制也適用於歷程系統數據表:
- 2024年9月1日之前擷取的血統資料無法取得。
- 在譜系檢視中,使用作業 API
runs submit要求或spark submit工作類型的作業是無法使用的。 這些工作流程仍會擷取表格和欄位層級的譜系,但不會擷取工作執行的連結。 - 重新命名後的目錄、結構描述、資料表、檢視或欄位將不會保留資料譜系。
- 如果您使用 Spark SQL 資料集檢查點,則不會擷取譜系。
- Unity Catalog 在大多數情況下會擷取 Lakeflow 管線的血統,但對於使用 PRIVATE 資料表的管線,覆蓋率不完整。
- 彈性分散式資料集 (RDD) 不會在譜系中擷取。
- 全域暫存檢視不會被記錄在譜系中。
- 交易會在每次讀取和寫入時產生資料譜系。 即使交易被回滾,血緣事件仍然存在。
-
system.information_schema下的數據表不會在譜系中記錄。 - Unity 目錄會盡可能擷取譜系至欄位層級。 不過,在某些情況下,無法擷取欄位層級譜系。 這些包括:
如果來源或目標被參考為路徑,則無法擷取數據行譜系(範例:
select * from delta."s3://<bucket>/<path>")。 只有當來源和目標都以數據表名稱來參考時,才支援欄位譜系(範例:select * from <catalog>.<schema>.<table>)。使用使用者自訂函數(UDF)可能會模糊來源欄位與目標欄位之間的對應。 Unity Catalog 可擷取 UDF 的資料表層級沿襲,但不會擷取欄位層級的 UDF 沿襲。 參見 查看UDF血統。
其他資源
- 示範: Unity Catalog - 資料譜系
- 機器學習模型沿襲:若要追蹤機器學習模型的沿襲,請參見 Unity 目錄中的「追蹤模型資料沿襲」。
- 表格洞察:目錄總管中的 洞察 分頁顯示表格的使用趨勢:查詢模式、熱門使用者及讀取該資料的儀表板。 請參閱檢視表格深入分析與熱門程度。