共用方式為


將 Unity 目錄資料表資源加入 Databricks 應用程式

Unity 目錄資料表 加入為 Databricks Apps 資源,讓你的應用程式能查詢和修改儲存在 Unity 目錄中的資料,並具備治理與存取控制。 Unity 目錄資料表提供結構化的資料儲存與細緻權限,讓您的應用程式能安全地讀寫資料,無需硬編碼憑證。

權限要求

要存取 Unity 目錄資料表,應用程式的服務主體必須擁有 USE CATALOG 父目錄的權限、 USE SCHEMA 父架構的權限,以及 SELECT 資料表上的 OR MODIFY 權限。 當你新增資料表資源時,Azure Databricks 會自動將這些權限授予應用程式的服務主體。

若要讓此自動授與成功,每個權限必須符合下列其中一項:

  • 對於 USE CATALOG 所有帳戶使用者都擁有 USE CATALOG 目錄的權限,或者您擁有 MANAGE 目錄的權限。
  • 對於 USE SCHEMA:所有帳戶使用者都必須擁有在結構描述上的權限,或者您必須擁有 USE SCHEMA在結構描述上的權限。
  • For SELECTMODIFY要麼所有帳號使用者在表上都有SELECTMODIFY權限,要麼你在表上擁有MANAGE權限。

請參閱 Unity Catalog 使用權限與可保護物件

新增 Unity 目錄資料表資源

在你將資料表加入資源之前,先先檢視 應用程式資源的前置條件

  1. 當你建立或編輯應用程式時,請切換到 「配置 」步驟。
  2. 應用程式資源 區塊,點擊 + 新增資源
  3. 選擇 UC 表格 作為資源類型。
  4. 從工作區可用的資料表中選擇一個 Unity 目錄資料表。 該表格必須已存在於 Unity 目錄中。
  5. 為您的應用程式選取適當的權限層級:
    • 選擇: 授權應用程式查詢並讀取資料表資料。 這對於只需要讀取資料的應用程式來說很適合。
    • 修改: 授權應用程式插入、更新及刪除資料表中的資料。 此權限隱含包含 SELECT,因此應用程式也能讀取資料。
  6. (可選)指定一個自訂的資源金鑰,這就是你在應用程式設定中參考資料表的方式。 預設索引鍵是 table

備註

MODIFY 並非所有表格類型皆可用。 例如,視圖不支持 MODIFY 特權。 如果表格不支援 MODIFY,則僅 SELECT 可用。

環境變數

當你部署帶有 Unity Catalog 資料表資源的應用程式時,Azure Databricks 會透過環境變數公開該資料表的完整三層名稱,你可以透過該 valueFrom 欄位來參考。

設定範例:

env:
  - name: UC_TABLE_NAME
    valueFrom: table # Use your custom resource key if different

在您的應用程式中使用表格:

import os
from databricks.sdk import WorkspaceClient

# Access the table name
table_name = os.getenv("UC_TABLE_NAME")

# Initialize workspace client
w = WorkspaceClient()

# Query the table using a SQL warehouse resource
result = w.statement_execution.execute_statement(
    warehouse_id=os.getenv("DATABRICKS_WAREHOUSE_ID"),  # Requires a SQL warehouse resource
    statement=f"SELECT * FROM {table_name} LIMIT 10"
)

如需詳細資訊,請參閱 使用環境變數存取資源

移除 Unity Catalog 資料表資源

當你從應用程式中移除 Unity 目錄資料表資源時,應用程式的服務主體會失去在資料表上的 SELECTMODIFYALL PRIVILEGES 授權。 Azure Databricks 也嘗試撤銷階層式目錄與結構權限。 該表格本身保持不變,並持續對擁有適當權限的其他使用者及應用程式開放。

最佳實務

在使用 Unity 目錄資料表資源時,請考慮以下幾點:

  • 授予最低權限。 除非你的應用程式需要寫入資料到表格,否則請使用 SELECT
  • 當你的應用程式需要對資料表執行 SQL 查詢時,將資料表資源與 SQL 倉儲資源 結合。
  • 為不同資料表使用不同的資料表資源,而不是給予廣泛的結構層級存取權限,這樣你才能應用最小權限原則。
  • 考慮使用 Unity 目錄卷 來處理非結構化資料,使用 Unity 目錄資料表來處理結構化資料。