捕獲和查看數據沿襲與統一目錄
預覽
此功能已在公共預覽.
你可以使用Unity Catalog在Databricks集群或SQL倉庫上捕獲運行時數據沿襲。所有語言都支持譜係,並將其捕獲到列級別。語言數據包括與查詢相關的筆記本、工作流和儀表板。沿襲可以在數據資源管理器中近乎實時地可視化,並使用Databricks REST API檢索。
沿襲是在所有的工作空間中聚集到一個Unity Catalog亞礦。這意味著在一個工作空間中捕獲的沿襲在共享該metastore的任何其他工作空間中都是可見的。用戶必須具有查看沿襲數據的正確權限。譜係數據保留30天。
本文描述了使用Data Explorer和REST API可視化沿襲。
需求
以下是使用Unity Catalog捕獲數據沿襲所必需的:
工作區必須具有啟用Unity目錄並在金幣層推出。
表必須注冊在Unity Catalog亞存儲中才有資格進行譜係捕獲。
集群和SQL倉庫必須包含
spark.databricks.dataLineage.enabled真正的
火花配置。有關在集群上啟用數據沿襲的詳細信息,請參見數據沿襲.有關在SQL倉庫上啟用數據沿襲的詳細信息,請參見配置SQL倉庫以捕獲數據沿襲.查詢必須使用Spark DataFrame(例如,返回DataFrame的Spark SQL函數)或Databricks SQL接口。有關Databricks SQL和PySpark查詢的示例,請參見例子.
要查看表或視圖的譜係,用戶必須具有
選擇
表或視圖上的特權。要查看筆記本、工作流或儀表板的沿襲信息,用戶必須具有由工作區中的訪問控製設置定義的對這些對象的權限。看到血統的權限.
要捕獲沿襲,必須使用表創建和修改數據。對於直接寫入文件的數據,不捕獲譜係。
限製
隻有在Databricks Runtime 11.2或更高版本中才支持Delta表之間的流。
當數據直接寫入雲存儲中的文件時,即使在雲存儲位置定義了表,也不會捕獲譜係。例如,
spark.write.save(“s3: / / mybucket / mytable /”)
不會產生血統。因為沿襲是在30天的滾動窗口上計算的,所以對於過去30天內沒有修改過的表,不會顯示沿襲。
使用Jobs API的工作流
運行提交
查看沿襲時請求不可用。類時仍然捕獲表和列級沿襲運行提交
請求,但是沒有捕獲到運行的鏈接。沒有為Delta Live Tables管道捕獲譜係。
例子
請注意
下麵的示例使用目錄名稱
lineage_data
以及模式名lineagedemo
.若要使用不同的目錄和模式,請更改示例中使用的名稱。要完成這個示例,您必須具備
創建
而且使用
模式上的特權。metastore管理員、目錄所有者或模式所有者可以授予這些特權。例如,要賦予組“data_engineers”中的所有用戶在lineagedemo
中的模式lineage_data
Catalog,一個metastore管理員可以運行以下查詢:創建模式lineage_data.lineagedemo;格蘭特使用,創建在模式lineage_data.lineagedemo來`data_engineers`;
必須使用集群啟用數據沿襲.
捕獲和探索血統
要捕獲沿襲數據,請使用以下步驟:
轉到Databricks登錄頁,單擊新在側欄中,選擇筆記本菜單上的。
輸入筆記本的名稱並選擇SQL在默認的語言.
在集群,選擇啟用譜係的集群。
點擊創建.
在第一個筆記本單元格中,輸入以下查詢:
創建表格如果不存在lineage_data.lineagedemo.菜單(recipe_idINT,應用程序字符串,主要字符串,甜點字符串);插入成lineage_data.lineagedemo.菜單(recipe_id,應用程序,主要,甜點)值(1,“酸橘汁醃魚,“玉米餅”,“坯子”),(2,“番茄湯”,“雜音”,“焦糖布丁”),(3.,“芯片”,“烤奶酪”,“芝士蛋糕”);創建表格lineage_data.lineagedemo.晚餐作為選擇recipe_id,concat(應用程序,“+”,主要,“+”,甜點)作為full_menu從lineage_data.lineagedemo.菜單
要運行查詢,請單擊單元格並按下shift + enter或者點擊並選擇運行單元.
要使用數據資源管理器查看這些查詢生成的沿襲,請執行以下步驟:
點擊數據在側欄中。
單擊目錄名稱,單擊lineagedemo,並選擇
晚餐
表格你也可以使用搜索表文本框中的頂部欄中搜索晚餐
表格選擇血統選項卡。的血統麵板顯示
菜單
表格若要查看數據沿襲的交互式圖形,請單擊參見譜係圖.圖中默認顯示一級。您可以單擊節點以顯示更多可用的連接。
單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源和目標表、筆記本和工作流。
顯示與筆記本相關的
晚餐
表中,選擇筆記本血統聯係麵板或關閉沿襲圖並單擊筆記本電腦.要在新選項卡中打開筆記本,請單擊筆記本名稱。要查看列級沿襲,請單擊模式選項卡,選擇晚餐表,並單擊full_menu列。的列血統控件中的三列
菜單
表的串聯派生full_menu
列。
要演示使用不同的語言(例如Python)創建和查看沿襲,請使用以下步驟:
打開之前創建的筆記本,創建一個新單元格,然後輸入以下Python代碼:
%python從pyspark.sql.functions進口蘭德,輪df=火花.範圍(3.).withColumn(“價格”,輪(10*蘭德(種子=42),2)).withColumnRenamed(“id”,“recipe_id”)df.寫.模式(“覆蓋”).saveAsTable(“lineage_data.lineagedemo.price”)晚餐=火花.讀.表格(“lineage_data.lineagedemo.dinner”)價格=火花.讀.表格(“lineage_data.lineagedemo.price”)dinner_price=晚餐.加入(價格,在=“recipe_id”)dinner_price.寫.模式(“覆蓋”).saveAsTable(“lineage_data.lineagedemo.dinner_price”)
在單元格中單擊並按下,運行單元格shift + enter或者點擊並選擇運行單元.
打開數據資源管理器,單擊目錄名稱,單擊lineagedemo,並選擇
價格
表格選擇血統選擇並單擊參見譜係圖.單擊沿襲圖節點以查看SQL和Python查詢生成的數據沿襲。
單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源和目標表、筆記本和工作流。
捕獲和查看工作流沿襲
要捕獲沿襲,工作流必須運行在包含spark.databricks.dataLineage.enabled真正的
火花配置。有關在集群上啟用數據沿襲的詳細信息,請參見數據沿襲.
要演示Databricks工作流的查看沿襲,請使用以下步驟:
轉到Databricks登錄頁,切換到Data Science & Engineering角色。
點擊新在側欄中選擇筆記本菜單上的。
輸入筆記本的名稱並選擇SQL在默認的語言.
點擊創建.
在第一個筆記本單元格中,輸入以下查詢:
選擇*從lineage_data.lineagedemo.菜單
點擊時間表在上麵的欄裏。在調度對話框中,選擇手冊,選擇已啟用譜係的集群,單擊創建.
點擊現在運行.
點擊數據,以打開數據資源管理器。
單擊目錄名稱,單擊lineagedemo,並選擇
菜單
表格你也可以使用搜索表文本框中的頂部欄中搜索菜單
表格選擇血統選項卡上,單擊工作流,並選擇下遊選項卡。作業名稱出現在下麵作業名作為消費者
菜單
表格
捕獲和查看儀表板沿襲
要演示SQL儀表板的查看沿襲,請使用以下步驟:
請注意
您必須使用SQL倉庫啟用數據沿襲.
轉到Databricks登錄頁,單擊打開數據資源管理器數據在側欄中。
單擊目錄名稱,單擊lineagedemo,並選擇
菜單
表格你也可以使用搜索表文本框中的頂部欄中搜索菜單
表格點擊操作>創建快速儀表板.
選擇要添加到儀表板的列並單擊創建.
轉到數據資源管理器,單擊目錄名稱,單擊lineagedemo,並選擇
菜單
表格選擇血統選擇並單擊指示板.儀表板名稱顯示在下麵儀表板的名字作為菜單表的消費者。
血統的權限
沿襲圖也有相同的特性權限模型作為Unity目錄。如果用戶在表上沒有SELECT特權,他們將無法探索譜係。此外,用戶隻能看到他們有權限查看的筆記本、工作流和儀表板。例如,對非admin用戶執行以下命令userA
:
格蘭特使用在lineage_data.lineagedemo來`userA@公司.com`;格蘭特選擇在lineage_data.lineagedemo.菜單來`userA@公司.com`;
當userA
屬性的沿襲圖lineage_data.lineagedemo.menu
表,他們會看到菜單
表,但將無法看到有關關聯表的信息,例如下遊表lineage_data.lineagedemo.dinner
表格的晚餐
表顯示為戴麵具的
節點中顯示到userA
,userA
無法展開圖以顯示它們沒有訪問權限的表的下遊表。
有關管理對工作空間對象的訪問的詳細信息,請參見工作空間對象訪問控製.
刪除沿襲數據
警告
下麵的指令刪除存儲在Unity Catalog中的所有對象。隻有在必要時才使用這些說明。例如,為了滿足法規遵從性需求。
要刪除沿襲數據,必須刪除管理Unity Catalog對象的metastore。有關刪除亞轉移瘤的更多信息,請參見刪除一個metastore.數據將在30天內刪除。
數據沿襲API
數據沿襲API允許檢索表和列的沿襲。
重要的
要訪問Databricks REST api,必須進行身份驗證.
檢索表沿襲
類的沿襲數據晚餐
表格
請求
—netrc -X GET\- h“application / json內容類型:\https:// < databricks-instance / api / 2.0 / lineage-tracking / table-lineage\- d{“table_name”:“lineage_data.lineagedemo。Dinner ", "include_entity_lineage": true}}'
取代< databricks-instance >
和數據庫工作空間實例名稱例如,dbc-a1b2345c-d6e7.cloud.www.eheci.com
.
本例使用. netrc文件。
響應
{“上遊”:[{“tableInfo”:{“名稱”:“菜單”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_type”:“表”},“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]}),“下遊”:[{“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]},{“tableInfo”:{“名稱”:“dinner_price”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_type”:“表”},“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]}]}
檢索列沿襲
屬性的列數據晚餐
表格
請求
—netrc -X GET\- h“application / json內容類型:\https:// < databricks-instance / api / 2.0 / lineage-tracking / column-lineage\- d{“table_name”:“lineage_data.lineagedemo。Dinner ", "column_name": "dessert"}}'
取代< databricks-instance >
和數據庫工作空間實例名稱例如,dbc-a1b2345c-d6e7.cloud.www.eheci.com
.
本例使用. netrc文件。
響應
{“upstream_cols”:[{“名稱”:“甜點”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”},{“名稱”:“主要”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”},{“名稱”:“應用程序”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”}),“downstream_cols”:[{“名稱”:“full_menu”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“dinner_price”,“table_type”:“表”}]}