捕獲和查看數據沿襲與統一目錄

預覽

此功能已在公共預覽

你可以使用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_dataCatalog,一個metastore管理員可以運行以下查詢:

    創建模式lineage_datalineagedemo格蘭特使用創建模式lineage_datalineagedemodata_engineers
  • 必須使用集群啟用數據沿襲

捕獲和探索血統

要捕獲沿襲數據,請使用以下步驟:

  1. 轉到Databricks登錄頁,單擊新圖標在側欄中,選擇筆記本菜單上的。

  2. 輸入筆記本的名稱並選擇SQL默認的語言

  3. 集群,選擇啟用譜係的集群。

  4. 點擊創建

  5. 在第一個筆記本單元格中,輸入以下查詢:

    創建表格如果存在lineage_datalineagedemo菜單recipe_idINT應用程序字符串主要字符串甜點字符串);插入lineage_datalineagedemo菜單recipe_id應用程序主要甜點1“酸橘汁醃魚“玉米餅”“坯子”),2“番茄湯”“雜音”“焦糖布丁”),3.“芯片”“烤奶酪”“芝士蛋糕”);創建表格lineage_datalineagedemo晚餐作為選擇recipe_idconcat應用程序“+”主要“+”甜點作為full_menulineage_datalineagedemo菜單
  6. 要運行查詢,請單擊單元格並按下shift + enter或者點擊運行菜單並選擇運行單元

要使用數據資源管理器查看這些查詢生成的沿襲,請執行以下步驟:

  1. 點擊數據在側欄中。

  2. 單擊目錄名稱,單擊lineagedemo,並選擇晚餐表格你也可以使用搜索表文本框中的頂部欄中搜索晚餐表格

  3. 選擇血統選項卡。的血統麵板顯示菜單表格

    血統麵板
  4. 若要查看數據沿襲的交互式圖形,請單擊參見譜係圖.圖中默認顯示一級。您可以單擊節點以顯示更多可用的連接。

  5. 單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源和目標表、筆記本和工作流。

    譜係圖
  6. 顯示與筆記本相關的晚餐表中,選擇筆記本血統聯係麵板或關閉沿襲圖並單擊筆記本電腦.要在新選項卡中打開筆記本,請單擊筆記本名稱。

  7. 要查看列級沿襲,請單擊模式選項卡,選擇晚餐表,並單擊full_menu列。的列血統控件中的三列菜單表的串聯派生full_menu列。

    全菜單列沿襲

要演示使用不同的語言(例如Python)創建和查看沿襲,請使用以下步驟:

  1. 打開之前創建的筆記本,創建一個新單元格,然後輸入以下Python代碼:

    pythonpyspark.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”
  2. 在單元格中單擊並按下,運行單元格shift + enter或者點擊運行菜單並選擇運行單元

  3. 打開數據資源管理器,單擊目錄名稱,單擊lineagedemo,並選擇價格表格

  4. 選擇血統選擇並單擊參見譜係圖.單擊沿襲圖節點以查看SQL和Python查詢生成的數據沿襲。

    擴展譜係圖
  5. 單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源和目標表、筆記本和工作流。

捕獲和查看工作流沿襲

要捕獲沿襲,工作流必須運行在包含spark.databricks.dataLineage.enabled真正的火花配置。有關在集群上啟用數據沿襲的詳細信息,請參見數據沿襲

要演示Databricks工作流的查看沿襲,請使用以下步驟:

  1. 轉到Databricks登錄頁,切換到Data Science & Engineering角色。

  2. 點擊新圖標在側欄中選擇筆記本菜單上的。

  3. 輸入筆記本的名稱並選擇SQL默認的語言

  4. 點擊創建

  5. 在第一個筆記本單元格中,輸入以下查詢:

    選擇lineage_datalineagedemo菜單
  6. 點擊時間表在上麵的欄裏。在調度對話框中,選擇手冊,選擇已啟用譜係的集群,單擊創建

  7. 點擊現在運行

  8. 點擊數據,以打開數據資源管理器。

  9. 單擊目錄名稱,單擊lineagedemo,並選擇菜單表格你也可以使用搜索表文本框中的頂部欄中搜索菜單表格

  10. 選擇血統選項卡上,單擊工作流,並選擇下遊選項卡。作業名稱出現在下麵作業名作為消費者菜單表格

捕獲和查看儀表板沿襲

要演示SQL儀表板的查看沿襲,請使用以下步驟:

請注意

您必須使用SQL倉庫啟用數據沿襲

  1. 轉到Databricks登錄頁,單擊打開數據資源管理器數據在側欄中。

  2. 單擊目錄名稱,單擊lineagedemo,並選擇菜單表格你也可以使用搜索表文本框中的頂部欄中搜索菜單表格

  3. 點擊操作>創建快速儀表板

  4. 選擇要添加到儀表板的列並單擊創建

  5. 轉到數據資源管理器,單擊目錄名稱,單擊lineagedemo,並選擇菜單表格

  6. 選擇血統選擇並單擊指示板.儀表板名稱顯示在下麵儀表板的名字作為菜單表的消費者。

血統的權限

沿襲圖也有相同的特性權限模型作為Unity目錄。如果用戶在表上沒有SELECT特權,他們將無法探索譜係。此外,用戶隻能看到他們有權限查看的筆記本、工作流和儀表板。例如,對非admin用戶執行以下命令userA

格蘭特使用lineage_datalineagedemouserA@公司com格蘭特選擇lineage_datalineagedemo菜單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”“表”