分享方式:


建立和管理 Delta Sharing 的共享

本文說明如何建立和管理 Delta Sharing 的共享。

共用是 Unity Catalog 中可保護的物件,可以用來與一個或多個收件者分享以下資料資產:

  • 表格和表格分區
  • 視圖,包括限制行和列層級存取的動態視圖。
  • 筆記本
  • AI 模型

如果您共用整個架構(資料庫),收件者可以在共享架構時存取架構中的所有數據表、檢視、模型和磁碟區,以及未來新增至架構的任何數據和 AI 資產。

共享只能包含一個 Unity Catalog 中繼存放區的數據和 AI 資產。 您可以隨時在分享中新增或移除資料和 AI 資產。

如需詳細資訊,請參閱 共用、提供者和收件者

需求

若要建立共用,您必須:

  • 身為中繼存放區管理員,或擁有您想要共享數據的 Unity Catalog 中繼存放區的 CREATE SHARE 許可權。
  • 使用已連結 Unity 目錄中繼存放區的 Azure Databricks 工作區建立共用。

若要將資料表或檢視新增至共用,您必須:

  • 成為股份擁有者。
  • 在包含資料表或檢視表的目錄和綱目上擁有USE CATALOGUSE SCHEMA許可權,或擁有該目錄或綱目的所有權。
  • 擁有 SELECT 資料表或檢視表的權限。 您必須保留該許可權,才能讓數據表或檢視繼續共用。 如果您遺失,收件者就無法透過共用存取數據表或檢視表。 因此,Databricks 建議您使用群組作為共享擁有者。

若要將磁碟區新增至共用,您必須:

  • 成為股東。
  • 具有 USE CATALOGUSE SCHEMA 權限,以訪問包含磁碟區的目錄和架構,或擁有目錄或架構的所有權。
  • 具有 READ VOLUME 磁碟區的權限。 您必須保留該許可權,才能讓磁碟區繼續共用。 如果您遺失它,收件者就無法透過共用存取該磁碟區。 因此,Databricks 建議您使用群組作為共享擁有者。

若要將模型新增至共用,您必須:

  • 成為股東。
  • USE CATALOGUSE SCHEMA 具有包含模型的目錄和架構的許可權,或擁有目錄或架構的所有權。
  • 擁有 EXECUTE 模型的許可權。 您必須保留該許可權,才能讓模型繼續共用。 如果您遺失,收件者就無法透過共用存取模型。 因此,Databricks 建議您使用群組作為共享擁有者。

若要共用整個架構,您必須:

  • 成為共用擁有者和架構擁有者,或具有 USE SCHEMA.
  • SELECT 架構上使用,以分享數據表。
  • READ VOLUME 架構上擁有共用磁碟區。

若要將筆記本檔案新增至共用,您必須:

  • 共享擁有者,並具有筆記本的 CAN READ 許可權。

若要將共用的存取權授與收件者,您必須是下列其中一項:

  • Metastore 管理員。
  • 在共用和收件者物件上同時擁有委派權限或擁有權的使用者((USE SHARE + SET SHARE PERMISSION) 或共用的擁有者)以及 (USE RECIPIENT 或收件者的擁有者)。

若要查看分享,您必須是下列其中之一:

  • 中繼存放區管理員(可檢視全部)
  • 具有 USE SHARE 權限的使用者 (可檢視全部)
  • 共用物件擁有者

計算需求:

  • 如果您使用 Databricks Notebook 來建立共用,您的計算資源必須使用 Databricks Runtime 11.3 LTS 或更新版本,並具有標準或專用存取模式(先前共用和單一使用者)。
  • 如果您使用 SQL 語句將架構新增至共用(或更新或移除架構),則必須使用 SQL 倉儲或執行 Databricks Runtime 13.3 LTS 或更新版本的計算。 使用目錄總管執行相同的作業沒有計算需求。

建立共享物件

若要建立共用,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 CREATE SHARE Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

所需的許可權:中繼存放區管理員或具有該中繼存放區特定權限的使用者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 目錄 窗格頂端,按一下 齒輪圖示 並選取 Delta Sharing

    或者,從 快速存取 頁面,按一下 Delta Sharing > 按鈕。

  3. 在 [ 由我 共用] 索引標籤上,按兩下 [ 共享數據] 按鈕。

  4. 建立共用 頁面上,輸入共用 名稱 及選擇性批注。

  5. 按一下 [儲存並繼續]

    您可以繼續新增數據資產,或稍後停止並返回。

  6. 在 [ 新增數據資產 ] 索引標籤上,選取您要共享的數據表、磁碟區、檢視和模型。

    如需詳細指示,請參閱:

  7. 按一下 [儲存並繼續]

  8. 在 [ 新增筆記本] 索引 標籤上,選取您想要共用的筆記本。

    如需詳細指示,請參閱 將筆記本檔案新增至共用

  9. 按一下 [儲存並繼續]

  10. 在 [ 新增收件者] 索引 標籤上,選取您要與其共用的收件者。

    如需詳細指示,請參閱管理對 Delta Sharing 數據共用的存取權(適用於提供者)。

  11. 按兩下 [ 共享資料 ] 以與收件者共享數據。

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

CREATE SHARE [IF NOT EXISTS] <share-name>
[COMMENT "<comment>"];

現在您可以將數據表、磁碟區、檢視和模型新增至共用。

如需詳細指示,請參閱:

命令行界面 (CLI)

使用 Databricks CLI 執行下列命令。

databricks shares create <share-name>

您可以使用 --comment 來添加註釋或使用 --json 來將資產添加到共用中。 如需詳細資訊,請參閱下列各節。

現在您可以將數據表、磁碟區、檢視和模型新增至共用。

如需詳細指示,請參閱:

將數據表新增至共用

若要將數據表新增至共用,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

注意

表格批註、欄位批註和 主鍵約束 將在 2024 年 7 月 25 日或之後,通過 Databricks 對 Databricks 共用與收件者共用的資料中傳送。 如果您想要在發佈日期之前,透過已與收件者共享的內容開始共用批注和條件約束,您必須撤銷並重新授予該收件者的存取權,以觸發批注和條件約束功能的共用。

所需的權限:是共用對象的擁有者,USE CATALOG 以及包含該數據表的目錄和架構上的USE SCHEMA,以及對數據表本身的SELECT權限。 只要您想共享該數據表,您就必須保留 SELECT 許可權。 如需詳細資訊,請參閱 需求

注意

如果您是工作區管理員,而且從工作區管理員群組繼承了 USE SCHEMAUSE CATALOG 的架構和目錄許可權,則您無法將資料表新增至分享。 您必須先為架構和目錄授與 USE SCHEMAUSE CATALOG 許可權。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下 齒輪圖示,然後選取 Delta Sharing

    或者,從 快速存取 頁面,按一下 Delta Sharing > 按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要新增數據表的共享,然後按兩下其名稱。

  4. 按兩下 [ 管理資產 > ][新增數據資產]。

  5. 在 [ 新增數據表] 頁面上,選取整個架構(資料庫)或個別數據表和檢視。

    • 若要選取數據表或檢視表,請先選取目錄,然後選取包含數據表或檢視表的架構,然後選取數據表或檢視表本身。

      您可以使用工作區搜尋,依名稱、資料行名稱或批注來搜尋數據表。 請參閱搜尋工作區物件

    • 若要選取架構,請先選取目錄,然後選取架構。

      如需共用架構的詳細資訊,請參閱 將架構新增至共用

  6. 歷程記錄:共用數據表歷程記錄,讓收件者能夠執行時間移動查詢,或使用Spark結構化串流讀取數據表。 針對 Databricks 對 Databricks 共用,數據表的 Delta 記錄也會共用以改善效能。 請參閱 透過共用歷史記錄改善數據表的讀取效能。 記錄共用需要 Databricks Runtime 12.2 LTS 或更新版本。

    注意

    如果除了執行時間旅行查詢和串流讀取之外,您希望您的客戶能夠使用 table_changes() 函式查詢數據表的變更數據饋送(CDF),您必須先在數據表上啟用 CDF ,才能共用數據表 WITH HISTORY

  7. (選擇性)按兩下 [ 進階資料表選項 ] 以指定下列選項。 如果您選取整個架構,則無法使用別名和分割區。 如果您選取整個架構,預設會包含資料表歷程記錄。

    • 別名:替代數據表名稱,讓數據表名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的數據表名稱。 如果指定別名,收件者就無法使用實際的數據表名稱。
    • 分區:只共享表格的一部分。 例如: (column = 'value') 。 請參閱 指定要共享 的數據表分割和 使用收件者屬性來執行數據分割篩選
  8. 按一下儲存

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令,以新增數據表:

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>  [COMMENT "<comment>"]
   [PARTITION(<clause>)] [AS <alias>]
   [WITH HISTORY | WITHOUT HISTORY];

執行下列命令以新增整個架構。 ADD SCHEMA此命令需要執行 Databricks Runtime 13.3 LTS 或更新版本的 SQL 倉儲或計算。 如需共用架構的詳細資訊,請參閱 將架構新增至共用

ALTER SHARE <share-name> ADD SCHEMA <catalog-name>.<schema-name>
[COMMENT "<comment>"];

選項包括下列項目。 選擇整個架構時,PARTITIONAS <alias> 將無法使用。

  • PARTITION(<clause>):如果您想要只共享資料表的一部分,您可以指定分割區。 例如,(column = 'value')請參閱指定要共用的數據表分割使用收件者屬性執行數據分割篩選

  • AS <alias>:替代數據表名稱或 別名 ,讓數據表名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的數據表名稱。 如果指定別名,收件者就無法使用實際的數據表名稱。 請使用 <schema-name>.<table-name> 格式。

  • WITH HISTORYWITHOUT HISTORY:當 WITH HISTORY 被指定時,共享包含完整歷程記錄的表格,讓收件者能夠執行時光旅行查詢和串流讀取。 在 Databricks 之間的共用中,歷史記錄共用還會傳遞表格的 Delta 日誌,以提升效能。 默認情況下,如果您的計算正在運行 Databricks Runtime 16.2 或以上版本,數據表共用行為為 WITH HISTORY;如果運行的是較早的 Databricks Runtime 版本,行為則為 WITHOUT HISTORY。 針對架構共用,不論 Databricks Runtime 版本為何,預設值都會 WITH HISTORYWITH HISTORYWITHOUT HISTORY 需要 Databricks Runtime 12.2 LTS 或更新版本。 另請參閱 使用記錄共用改善數據表讀取效能。

    注意

    如果除了執行時光查詢和串流讀取之外,您希望您的客戶能夠使用 table_changes() 函式查詢資料表的變更資料饋送(CDF),您必須先 在資料表上啟用 CDF,才能共用該表 WITH HISTORY

如需 ALTER SHARE 選項的詳細資訊,請參閱 ALTER SHARE

CLI

若要新增數據表,請使用 Databricks CLI 執行下列命令。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

若要新增架構,請執行下列 Databricks CLI 命令:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<schema-full-name>",
          "data_object_type": "SCHEMA"
        }
      }
    ]
  }'

注意

對於表格,僅限表格,您可以省略 "data_object_type"

若要瞭解此範例中列出的選項,請檢視 [SQL] 索引標籤上的指示。

若要瞭解其他參數,請在 REST API 參考中執行 databricks shares update --help 或查看 PATCH /api/2.1/unity-catalog/shares/

如需從共用移除數據表的相關信息,請參閱 更新共用

指定要共享的數據表分割區

若要在將資料表新增至共用時只共享數據表的一部分,您可以提供分割區規格。 當您使用目錄總管、Databricks Unity 目錄 CLI 或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令,將數據表新增至共用或更新共用時,您可以指定分割區。 請參閱 將數據表新增至共用更新共用

基本範例

下列 SQL 範例會分享資料表中 inventory 資料部分,由 yearmonthdate 資料行分割:

  • 2021 年的數據。
  • 2020 年 12 月的數據。
  • 2019 年 12 月 25 日的數據。
ALTER SHARE share_name
ADD TABLE inventory
PARTITION (year = "2021"),
          (year = "2020", month = "Dec"),
          (year = "2019", month = "Dec", date = "2019-12-25");

使用收件者屬性執行數據分割篩選

您可以共用符合數據收件者屬性數據表分割區,也稱為參數化數據分割共用。

預設屬性包括:

  • databricks.accountId:數據收件者所屬的 Azure Databricks 帳戶(僅限 Databricks-to-Databricks 共用)。
  • databricks.metastoreId:資料接收者所屬的 Unity Catalog Metastore(僅限 Databricks-to-Databricks 共用)。
  • databricks.name:數據收件者的名稱。

您可以在建立或更新收件者時,建立您想要的任何自定義屬性。

依收件者屬性篩選可讓您跨多個 Databricks 帳戶、工作區和用戶共用相同的數據表,同時維護兩者之間的數據界限。

例如,如果您的數據表包含 Azure Databricks 帳戶標識碼數據行,您可以使用 Azure Databricks 帳戶標識碼所定義的數據表分割建立單一共用。 當您共用時,Delta Sharing 會動態傳送給每個收件者,而只會傳送與其 Azure Databricks 帳戶相關聯的數據。

Delta Sharing 中以參數為基礎的動態分區共享示意圖

若無法依屬性動態分割,您必須為每個收件者建立個別的共享。

若要在建立或更新共用時,指定根據收件者屬性進行篩選的分割區,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄瀏覽器或 CURRENT_RECIPIENT SQL 函式:

注意

收件者屬性可在 Databricks Runtime 12.2 和更新版本上使用。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下 [齒輪圖示],然後選取 [Delta Sharing]。

    或者,從「快速存取」頁按一下「Delta Sharing >」按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要更新的共享,然後按兩下其名稱。

  4. 按兩下 [ 管理資產 > ][新增數據資產]。

  5. 在 [ 新增數據表] 頁面上,選取包含數據表的目錄和資料庫,然後選取數據表。

    如果您不確定哪個目錄和資料庫包含數據表,您可以使用工作區搜尋依名稱、數據行名稱或批注來搜尋它。 請參閱搜尋工作區物件

  6. (選擇性)按兩下 [ 進階資料表選項 ] 以新增 資料分割 規格。

    在 [ 將分割區新增至數據表 ] 對話框中,使用下列語法新增屬性型數據分割規格:

    (<column-name> = CURRENT_RECIPIENT().<property-key>)
    

    例如,

    (country = CURRENT_RECIPIENT().'country')
    
  7. 按一下 <儲存> 。

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>
   PARTITION (<column-name> = CURRENT_RECIPIENT().<property-key>);

例如,

ALTER SHARE acme ADD TABLE acme.default.some_table
  PARTITION (country = CURRENT_RECIPIENT().'country');

將具有刪除向量或欄位映射的數據表新增至共享中

重要

這項功能處於公開預覽狀態

刪除向量是您可以在 Delta 資料表上啟用的記憶體優化功能。 請參閱什麼是刪除向量?

Azure Databricks 也支援 Delta 表的資料行對應。 請參閱重新命名和卸除與 Delta Lake 資料行對應的資料行

要與刪除向量或欄位映射共享資料表,您必須包含歷史記錄。 請參閱 將數據表新增至共用

當您分享具有刪除向量或欄位對應的資料表時,收件者可以使用 SQL 倉庫,執行 Databricks Runtime 14.1 或更高版本的計算,或運行開放原始碼 delta-sharing-spark 3.1 或更高版本的計算來查詢該資料表。 請參閱 啟用刪除向量或欄位對應的讀取表格啟用刪除向量或欄位對應的讀取表格

將檢視新增至共用

重要

這項功能處於公開預覽狀態

檢視是從一或多個數據表或其他檢視建立的唯讀物件。 可以從 Unity Catalog 中繼存放區中的多個架構和目錄所包含的數據表和其他檢視建立檢視。 請參閱 建立和管理檢視

本節說明如何使用 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的目錄總管、Databricks CLI 或 SQL 命令,將檢視新增至共用。 如果您要使用 Unity 目錄 REST API,請參閱 REST API 參考中的 PATCH /api/2.1/unity-catalog/shares/

所需權限:共用對象的擁有者,USE CATALOG 以及 USE SCHEMA 包含檢視的目錄和架構,還有 SELECT 檢視本身的權限。 只要您想要共享檢視,就必須保留 SELECT 許可權。 如需詳細資訊,請參閱 需求

其他需求:

  • 您必須在設定檢視共用的帳戶中啟用 無伺服器計算,以支援工作流程、筆記本和 DLT。 請參閱啟用無伺服器計算
  • 在 Delta 資料表或其他共享檢視上必須定義共享檢視。
  • 您無法共用參考共用資料表或共用檢視的檢視。
  • 當您將檢視新增至共用時,必須在 Databricks Runtime 13.3 LTS 或更新版本上使用 SQL 倉儲或計算。
  • 如需了解收件者在使用檢視時的需求和限制,請參閱 閱讀共享檢視

若要將視圖新增至共用項目:

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下 [齒輪圖示],然後選取 [Delta Sharing]。

    或者,從「快速存取」頁面,按一下「Delta Sharing >」按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要新增檢視的共用,然後按兩下其名稱。

  4. 按兩下 [ 管理資產 > ][新增數據資產]。

  5. 在 [ 新增數據表] 頁面上,搜尋或流覽您想要共用的檢視,並加以選取。

  6. (選擇性)按兩下 [ 進階資料表選項 ] 以指定別名或替代檢視名稱,讓檢視名稱更容易閱讀。 別名是收件者看到的名稱,而且必須在查詢中使用。 如果指定別名,收件者就無法使用實際的檢視名稱。

  7. 按一下 儲存

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

ALTER SHARE <share-name> ADD VIEW <catalog-name>.<schema-name>.<view-name>
   [COMMENT "<comment>"]
   [AS <alias>];

這些選項包括:

  • AS <alias>:替代檢視名稱或別名,可讓檢視名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的檢視名稱。 如果指定別名,收件者就無法使用實際的檢視名稱。 請使用 <schema-name>.<view-name> 格式。
  • COMMENT "<comment>":批註會出現在目錄總管 UI 中,當您使用 SQL 語句列出和顯示檢視詳細數據時。

如需 ALTER SHARE 選項的詳細資訊,請參閱 ALTER SHARE

命令行界面 (CLI)

執行下列 Databricks CLI 命令:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<view-full-name>",
          "data_object_type": "VIEW",
          "shared_as": "<view-alias>"
        }
      }
    ]
  }'

"shared_as": "<view-alias>" 是選擇性的,並提供替代的檢視名稱或別名,讓檢視名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的檢視名稱。 如果指定別名,收件者就無法使用實際的檢視名稱。 請使用 <schema-name>.<view-name> 格式。

若要瞭解其他參數,請在 REST API 參考中執行 databricks shares update --help 或查看 PATCH /api/2.1/unity-catalog/shares/

如需從共用移除檢視的詳細資訊,請參閱 更新共用

將動態檢視新增至共用以篩選數據列和數據行

重要

這項功能處於公開預覽狀態

您可以使用動態檢視來設定資料表資料的精細存取控制,包括:

  • 數據行或數據列層級的安全性。
  • 數據遮罩。

當您建立使用 CURRENT_RECIPIENT() 函式的動態檢視時,您可以根據收件者定義中指定的屬性來限制收件者存取權。

本節提供使用動態檢視,限制收件者存取數據列和數據行層級的範例。

需求

  • Databricks Runtime 版本CURRENT_RECIPIENT 函式在 Databricks Runtime 14.2 及以上版本中受支援。
  • 權限
    • 若要建立檢視,您必須是共用對象的擁有者,並且擁有USE CATALOGUSE SCHEMA權限,以用在包含檢視的目錄和架構上,此外,還需擁有SELECT權限在檢視本身上。 只要您想共享檢視,就必須保留 SELECT 權限。
    • 若要設定收件者的屬性,您必須是收件者對象的擁有者。
  • 限制:檢視共用的所有限制,包括 Databricks 對 Databricks 共用的限制,以及下列各項:
    • 當提供者共用一個使用CURRENT_RECIPIENT 函式的檢視時,由於共用的上下文,提供者無法直接查詢該檢視。 若要測試這類動態檢視,提供者必須將檢視與自己分享,並以收件者身份查詢該檢視。
    • 提供者無法建立引用動態檢視的檢視。

設定收件者屬性

在這些範例中,要共用的數據表具有名為 country的數據行,而且只有具有相符 country 屬性的收件者可以檢視特定數據列或數據行。

您可以在 Azure Databricks 筆記本或 SQL 查詢編輯器中使用目錄總管或 SQL 命令來設定收件者屬性。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下 [齒輪圖示] 並選取 [Delta Sharing]。

    或者,從快速存取 頁面,按一下 Delta Sharing> 按鈕。

  3. 在 [ 收件者] 索引 標籤上,尋找您要新增屬性的收件者,然後按兩下其名稱。

  4. 按兩下 [ 編輯屬性]。

  5. 編輯收件者屬性 對話框中,輸入欄位名稱作為鍵值(在此情況下為 country),以及您要篩選的項目作為篩選條件(例如,CA)。

  6. 按一下儲存

SQL

若要在收件者上設定 屬性,請使用 ALTER RECIPIENT。 在這個範例中,屬性 country 被設定為 CA

ALTER RECIPIENT recipient1 SET PROPERTIES ('country' = 'CA');

建立提供給收件者的列層級權限的動態檢視

在此範例中,只有具有相符 country 屬性的收件者可以檢視特定數據列。

CREATE VIEW my_catalog.default.view1 AS
  SELECT * FROM my_catalog.default.my_table
  WHERE country = CURRENT_RECIPIENT('country');

另一個選項是讓數據提供者維護個別的對應數據表,將事實數據表字段對應至收件者屬性,讓收件者屬性和事實數據表字段可以更靈活地分離。

建立具有針對收件者的列級權限的動態視圖

在此範例中,只有符合 屬性的 country 收件者可以檢視特定數據行。 其他則會看到傳回的資料為 REDACTED

CREATE VIEW my_catalog.default.view2 AS
  SELECT
  CASE
    WHEN CURRENT_RECIPIENT('country') = 'US' THEN pii
    ELSE 'REDACTED'
  END AS pii
  FROM my_catalog.default.my_table;

與收件者共用動態檢視

若要與收件者共用動態檢視,請使用與標準檢視相同的 SQL 命令或 UI 程式。 請參閱新增檢視至共用

將磁碟區新增至共享

磁碟區是 Unity Catalog 中的物件,代表在雲端物件儲存位置中的邏輯磁碟區。 這些措施主要是為了對非表格式資料資產進行治理和管理。 請參見什麼是 Unity Catalog 磁碟區?

本節說明如何使用目錄總管、Databricks CLI 或 Azure Databricks 筆記本或 SQL 查詢編輯器中的 SQL 命令,將磁碟區新增至共用。 如果您要使用 Unity 目錄 REST API,請參閱 REST API 參考中的 PATCH /api/2.1/unity-catalog/shares/

注意

卷註釋包含在 2024 年 7 月 25 日或之後,通過 Databricks 點對點共享與接收者共享的資料中。 如果您想要透過在發佈日期前已與收件者共享的分享內容開始分享批注,您必須撤銷並重新授予收件者的存取權,以啟動批注共用。

所需的許可權:共用對象的擁有者,USE CATALOG 以及在包含磁碟區的目錄和架構上的 USE SCHEMA,以及在磁碟區上的 READ VOLUME。 若您想要共用磁碟區,就必須維持 READ VOLUME 的許可權。 如需詳細資訊,請參閱 需求

其他需求:

  • 只有 Databricks-to-Databricks 共用才支援磁碟區共用。
  • 當您將磁碟區新增至共用時,必須在 2023.50 版或更新版本上使用 SQL 倉儲,或 Databricks Runtime 14.1 或更新版本的計算資源。
  • 如果提供者端的磁碟區記憶體具有自定義網路設定(例如防火牆或私人連結),則提供者必須確定收件者的控制平面和數據平面位址已正確列入允許清單,才能連線到磁碟區的儲存位置。

若要將磁碟區新增至共用:

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 目錄 窗格頂端,按一下齒輪圖示,然後選取 Delta Sharing

    或者,從快速存取頁面,按一下Delta Sharing >按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要新增磁碟區的共享,然後按兩下其名稱。

  4. 按一下 管理資產> 編輯資產

  5. 在 [ 編輯資產] 頁面上,搜尋或流覽您要共用的磁碟區並加以選取。

    或者,您可以選取包含磁碟區的整個架構。 請參閱 將結構描述新增至共用

  6. (選擇性)按兩下 [ 進階選項 ] 以指定替代磁碟區名稱或 別名,讓磁碟區名稱更容易閱讀。

    如果您選取整個架構,則無法使用別名。

    別名是收件者看到的名稱,而且必須在查詢中使用。 如果指定別名,收件者就無法使用實際的磁碟區名稱。

  7. 按一下 儲存

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

ALTER SHARE <share-name> ADD VOLUME <catalog-name>.<schema-name>.<volume-name>
   [COMMENT "<comment>"]
   [AS <alias>];

這些選項包括:

  • AS <alias>:替代磁碟區名稱或別名,可讓磁碟區名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的磁碟區名稱。 如果指定別名,收件者就無法使用實際的磁碟區名稱。 請使用 <schema-name>.<volume-name> 格式。
  • COMMENT "<comment>":批註會出現在目錄總管 UI 中,當您使用 SQL 語句列出和顯示磁碟區詳細數據時。

如需 ALTER SHARE 選項的詳細資訊,請參閱 ALTER SHARE

命令行界面 (CLI)

使用 Databricks CLI 0.210 或更新版本執行下列命令:

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<volume-full-name>",
           "data_object_type": "VOLUME",
           "string_shared_as": "<volume-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<volume-alias>" 是選擇性的,並提供替代的磁碟區名稱或別名,讓磁碟區名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的磁碟區名稱。 如果指定別名,收件者就無法使用實際的磁碟區名稱。 請使用 <schema-name>.<volume-name> 格式。

若要瞭解其他參數,請在 REST API 參考中執行 databricks shares update --help 或查看 PATCH /api/2.1/unity-catalog/shares/

如需從共用中移除磁碟區的相關信息,請參閱 更新共用

將模型新增至共享

本節說明如何使用目錄總管、Databricks CLI 或 Azure Databricks 筆記本或 SQL 查詢編輯器中的 SQL 命令,將模型新增至共用。 如果您要使用 Unity 目錄 REST API,請參閱 REST API 參考中的 PATCH /api/2.1/unity-catalog/shares/

注意

模型批註和模型版本批註包含在 Databricks 之間的共用分享中。

所需的權限:共用對象的擁有者,USE CATALOGUSE SCHEMA 包含模型的目錄和架構,以及 EXECUTE 對模型的權限。 只要您希望共享模型,就必須保留 EXECUTE 權限。 如需詳細資訊,請參閱 需求

其他需求:

  • 只有 Databricks-to-Databricks 共用才支援模型共用。
  • 當您將模型新增至共用時,必須在 2023.50 版或更新版本上使用 SQL 倉儲,或 Databricks Runtime 14.0 或更新版本的計算資源。

若要將模型新增至共享:

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 目錄 窗格頂端,按一下 齒輪圖示 然後選取 Delta Sharing

    或者,從 快速存取 頁面,按一下 Delta Sharing> 按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要新增模型的共用,然後按兩下其名稱。

  4. 按一下管理資產> 編輯資產

  5. 在 [ 編輯資產] 頁面上,搜尋或流覽您想要共用的模型並加以選取。

    或者,您可以選取包含模型的整個架構。 參閱 將結構描述新增至共用

  6. (選擇性)按兩下 [ 進階選項 ] 以指定替代模型名稱或 別名,讓模型名稱更容易閱讀。

    如果您選取整個架構,則無法使用別名。

    別名是收件者看到的名稱,而且必須在查詢中使用。 如果指定別名,收件者就無法使用實際的模型名稱。

  7. 按一下 儲存

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

ALTER SHARE <share-name> ADD MODEL <catalog-name>.<schema-name>.<model-name>
   [COMMENT "<comment>"]
   [AS <alias>];

這些選項包括:

  • AS <alias>:替代模型名稱或別名,可讓模型名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的模型名稱。 如果指定別名,收件者就無法使用實際的模型名稱。 請使用 <schema-name>.<model-name> 格式。
  • COMMENT "<comment>":批註會出現在目錄總管 UI 中,當您使用 SQL 語句列出和顯示模型詳細數據時。

如需 ALTER SHARE 選項的詳細資訊,請參閱 ALTER SHARE

CLI(命令列介面)

使用 Databricks CLI 0.210 或更新版本執行下列命令:

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<model-full-name>",
           "data_object_type": "MODEL",
           "string_shared_as": "<model-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<model-alias>" 是選擇性的,並提供替代的模型名稱或別名,讓模型名稱更容易閱讀。 別名是收件者看到且必須在查詢中使用的模型名稱。 如果指定別名,收件者就無法使用實際的模型名稱。 請使用 <schema-name>.<model-name> 格式。

若要瞭解其他參數,請在 REST API 參考中執行 databricks shares update --help 或查看 PATCH /api/2.1/unity-catalog/shares/

如需從共用中移除模型的相關信息,請參閱 更新共用

將架構新增至共用

當您將整個結構新增到分享時,收件者不僅能夠存取您建立分享時結構中的所有數據資產,也能隨著時間存取新增到結構的任何資產。 這包括架構中的所有數據表、檢視和磁碟區。 以這種方式共享的數據表一律包含完整歷程記錄。

使用 SQL 新增、更新或移除架構需要執行 Databricks Runtime 13.3 LTS 或更新版本的 SQL 倉儲或計算。 使用目錄總管執行相同的作業沒有計算需求。

所需的許可權:共用物件的擁有者和綱要擁有者(或在綱要上具有 USE SCHEMASELECT 許可權的使用者)。

若要將架構新增至共用,請遵循將數據表新增至共用中的指示,並注意指定如何新增架構的內容。

如果您選取整體架構,則無法使用資料表別名、分割區段和磁碟區別名。 如果您已為架構中的任何資產建立別名或分割區,當您將整個架構新增至共用時,就會移除這些別名或分割區。

如果您想要為使用架構共享的數據表或磁碟區指定進階選項,您必須使用 SQL 共用數據表或磁碟區,併為資料表或磁碟區提供具有不同架構名稱的別名。

將筆記本檔案新增至共用

使用目錄總管將筆記本檔案新增至共用。

需要許可權:共用對象的擁有者,以及您想要共用之筆記本的 CAN READ 許可權。

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。
  2. 在 [快速存取] 頁面上,按一下 [Delta 分享 >] 按鈕。
  3. 在 [ 由我 共用] 索引標籤上,尋找您要新增筆記本的共享,然後按兩下其名稱。
  4. 按兩下 [ 管理資產 ],然後選取 [ 新增筆記本檔案]。
  5. 在 [ 新增筆記本檔案 ] 頁面上,按兩下檔案圖示以瀏覽您想要共用的筆記本。
    • 按兩下您要共用的檔案,然後按兩下 [ 選取]。
    • 選擇性地為檔案指定一個用戶易記的別名,在「共享為」欄位中。 這是收件者會看到的標識碼。
    • 在 [儲存體位置] 下,輸入您要儲存筆記本之雲端記憶體中的 外部位置。 您可以在定義的外部位置下指定子路徑。 如果您未指定外部位置,筆記本會儲存在中繼存放區層級儲存位置(或「中繼存放區根位置」中。 如果未為中繼存放區定義任何根位置,您必須在這裡輸入外部位置。 請參閱 將受控記憶體新增至現有的中繼存放區
  6. 按一下 [儲存]。

共用筆記本檔案現在會出現在 [資產] 索引標籤上的 [筆記本檔案] 清單中。

從共用中移除筆記本檔案

若要從共用中移除筆記本檔案:

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下齒輪圖示齒輪圖示,然後選取 [Delta Sharing]。

    或者,從 快速存取 頁面,按一下 Delta Sharing> 按鈕。

  3. 由我共用 的標籤上,找到包含筆記本的共用項目,然後點擊共用名稱。

  4. 在 [ 資產] 索引標籤上,尋找您想要從共用中移除的筆記本檔案。

  5. Kebab 功能表 點擊數據列右側的 Kebab 功能表,然後選取 [刪除筆記本檔案]。

  6. 在確認對話框中,按兩下 [ 刪除]。

更新共享資料夾中的筆記本檔案

若要更新您已共享的筆記本,您必須重新新增筆記本,並在 [共用為] 字段中提供新的別名。 Databricks 建議您使用指出筆記本修訂狀態的名稱,例如 <old-name>-update-1。 您可能需要通知收件者變更。 收件者必須選擇並複製新的筆記本,才能享受您的更新。

授予收件者存取共用的權限

若要授與收件者的共用存取權,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 GRANT ON SHARE Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

所需權限:下列其中一個:

  • Metastore 管理員。
  • 共用和收件者物件 ((USE SHARE + SET SHARE PERMISSION) 或共用擁有者) AND (USE RECIPIENT 或收件者擁有者) 的委派權限或所有權。

如需指示,請參閱管理對 Delta Sharing 數據共用的存取權(適用於提供者)。 本文也會說明如何撤銷收件者對共用的存取權。

查看股票和股票詳情

若要檢視共用的清單或共用的詳細數據,您可以使用目錄總管、Databricks Unity 目錄 CLI 或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。

需要許可權:傳回的共享清單取決於您的角色和許可權。 具有USE SHARE權限的中繼存放區系統管理員和使用者可以看到所有共用。 否則,您只能檢視那些您作為共享物件擁有者的股份。

詳細資料包括:

  • 共享的擁有者、建立者、建立時間戳、更新者、更新時間戳、評論。
  • 共用中的數據資產。
  • 具有共用存取權的收件者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下齒輪圖示,然後選取 [Delta Sharing]。

    或者,從 快速存取 頁面,按一下 Delta Sharing > 按鈕。

  3. 開啟共享標籤以檢視共享清單。

  4. 在 [詳細資料] 索引標籤上查看分享詳情。

SQL

若要檢視共用清單,請在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。 選擇性地將 <pattern> 替換為 LIKE 述詞

SHOW SHARES [LIKE <pattern>];

若要檢視特定共用的詳細數據,請執行下列命令。

DESCRIBE SHARE <share-name>;

若要檢視共用中所有數據表、檢視和磁碟區的詳細數據,請執行下列命令。

SHOW ALL IN SHARE <share-name>;

命令列介面 (CLI)

若要檢視共用清單,請使用 Databricks CLI 執行下列命令。

databricks shares list

若要檢視特定共用的詳細數據,請執行下列命令。

databricks shares get <share-name>

檢視擁有共用許可權的收件者

若要檢視收件者已獲授與存取權的共用清單,您可以使用目錄總管、Databricks Unity Catalog CLI,或在 Azure Databricks Notebook 或 Databricks SQL 查詢編輯器中使用 SHOW GRANTS TO RECIPIENT SQL 指令。

所需權限:中繼存放區管理員、USE SHARE許可權或共用對象的擁有者。

目錄管理器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下齒輪圖示,然後選取 [Delta Sharing]。

    或者,從快速存取頁面,按一下Delta Sharing>按鈕。

  3. 在 [ 由我 共用] 索引卷標上,尋找並選取收件者。

  4. 移至 [ 收件者] 索引 標籤,以檢視可存取共用的收件者清單。

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。

SHOW GRANTS ON SHARE <share-name>;

CLI(命令列介面)

使用 Databricks CLI 執行下列命令。

databricks shares share-permissions <share-name>

更新股份

除了將數據表、檢視磁碟區和筆記本新增至共用之外,您還可以:

  • 重新命名共享。
  • 從共享中移除資料表、檢視、磁碟區和架構。
  • 在分享上新增或更新留言。
  • 啟用或停用數據表記錄數據的存取權,讓收件者能夠執行時間移動查詢或串流讀取數據表。
  • 新增、更新或移除分割區定義。
  • 變更共享擁有者。

若要進行這些共用更新,您可以使用目錄總管、Databricks Unity 目錄 CLI 或 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。 您無法使用目錄資源管理器來重新命名共用。

需要許可權:若要更新共享擁有者,您必須是下列其中一項:中繼存放區管理員、共用對象的擁有者,或具有 USE SHARESET SHARE PERMISSION 許可權的使用者。 若要更新共享名稱,您必須是中繼存放區管理員(或具有 CREATE_SHARE 許可權的使用者) 共用擁有者。 若要更新任何其他共享屬性,您必須是擁有者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [目錄] 窗格頂端,按一下 [齒輪圖示] 並選取 [Delta Sharing]。

    或者,從 快速存取 頁面,按一下 Delta Sharing > 按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要更新的共享,然後按兩下其名稱。

在 [共用詳細數據] 頁面上,執行下列動作:

  • 單擊 [ 編輯圖示 ] 擁有者或批註字段旁的圖示以更新這些值。
  • 點擊資產列中的 Kebab 功能表 Kebab 功能表 按鈕來移除它。
  • 按兩下 [管理資產] [編輯資產>] 以更新所有其他屬性:
    • 若要移除資產,請清除資產旁的複選框。
    • 若要新增、更新或移除資料分割定義,請按兩下 [ 進階選項]。

SQL

在筆記本或 Databricks SQL 編輯器中執行下列命令。

重新命名共享資源:

ALTER SHARE <share-name> RENAME TO <new-share-name>;

從共享中移除資料表:

ALTER SHARE share_name REMOVE TABLE <table-name>;

從共享中移除磁碟區:

ALTER SHARE share_name REMOVE VOLUME <volume-name>;

在分享上新增或更新留言:

COMMENT ON SHARE <share-name> IS '<comment>';

在共享環境中新增或修改資料表的分區:

ALTER SHARE <share-name> ADD TABLE <table-name> PARTITION(<clause>);

變更共享擁有者:

ALTER SHARE <share-name> OWNER TO  '<principal>'

-- Principal must be an account-level user email address or group name.

開啟資料表的歷程記錄共享:

ALTER SHARE <share-name> ADD TABLE <table-name> WITH HISTORY;

如需 ALTER SHARE 參數的詳細資訊,請參閱 ALTER SHARE

命令列介面 (CLI)

使用 Databricks CLI 執行下列命令。

重新命名共享:

databricks shares update <share-name> --name <new-share-name>

從共享中移除資料表:

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

從共享中移除磁碟區(使用 Databricks CLI 0.210 或更新版本):

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<volume-full-name>",
          "data_object_type": "VOLUME",
          "string_shared_as": "<volume-alias>"
        }
      }
    ]
  }'

注意

如果磁碟區沒有別名,請使用name屬性。 如果有別名,請使用 string_shared_as

在分享上新增或更新留言:

databricks shares update <share-name> --comment '<comment>'

變更共享擁有者:

databricks  shares update <share-name> --owner '<principal>'

主體必須是帳戶層級的用戶電子郵件位址或組名。

刪除共用

若要刪除共用,您可以使用目錄總管、Databricks Unity 目錄 CLI,或 DELETE SHARE Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中的 SQL 命令。 您必須是共享的擁有者。

當您刪除共用時,收件者無法再存取共享數據。

需要的許可權:共享對象擁有者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示 [目錄]。

  2. 在 [Catalog] 窗格頂端,按一下齒輪圖示,然後選取 Delta Sharing。

    或者,從 快速存取 頁面,按一下 Delta Sharing > 按鈕。

  3. 在 [ 由我 共用] 索引標籤上,尋找您要刪除的共享,然後按兩下其名稱。

  4. Kebab 功能表 按兩下 kebab 選單,然後選取 [刪除]。

  5. 在確認對話框中,按兩下 [ 刪除]。

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。

DROP SHARE [IF EXISTS] <share-name>;

命令列介面 (CLI)

使用 Databricks CLI 執行下列命令。

databricks shares delete <share-name>