共用方式為


在 Databricks 應用程式中新增使用者定義函式(UDF)資源

將註冊在 Unity 目錄中的 使用者定義函數(UDF) 加入為 Databricks Apps 資源,讓您的應用程式能執行已註冊的 SQL 與 Python 函式。 UDF 提供可重複使用的業務邏輯、資料轉換及自訂作業,並可透過集中治理在組織內共享。

權限要求

要執行 UDF,應用程式的服務主體必須擁有 USE CATALOG 在父目錄上的權限、USE SCHEMA 在父結構上的權限,以及 EXECUTE 在函式上的權限。 當你新增 UDF 資源時,Azure Databricks 會自動將這些權限授予應用程式的服務主體。

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

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

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

新增使用者定義函數(UDF)資源

在你新增 UDF 作為資源之前,請先檢視 應用程式資源的前置條件

  1. 當你建立或編輯應用程式時,請切換到 「配置 」步驟。
  2. 應用程式資源 區塊,點擊 + 新增資源
  3. 選擇 UC 函式 作為資源類型。
  4. 從工作區可用的函式中選擇一個 UDF。 該函式必須已在 Unity 目錄中註冊。
  5. 選取應用程式的權限層級:
    • 可執行: 授權應用程式執行 UDF 並依所提供的參數執行。 這與 EXECUTE 權限相符。
  6. (可選)指定一個自訂的資源金鑰,這就是你在應用程式設定中參考 UDF 的方式。 預設索引鍵是 function

環境變數

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

設定範例:

env:
  - name: UC_FUNCTION_NAME
    valueFrom: function # Use your custom resource key if different

在你的應用程式中使用函式:

import os
from databricks.sdk import WorkspaceClient

# Access the function name
function_name = os.getenv("UC_FUNCTION_NAME")

# Initialize workspace client
w = WorkspaceClient()

# Execute the function via SQL
result = w.statement_execution.execute_statement(
    warehouse_id="your_warehouse_id",
    statement=f"SELECT {function_name}('parameter_value')"
)

# Process the result
print(f"Function result: {result}")

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

移除使用者定義函數(UDF)資源

當你從應用程式中移除 UDF 資源時,該應用程式的服務主體會失去對該函式的存取權。 UDF 本身保持不變,並持續對擁有適當權限的其他使用者和應用程式開放。

最佳做法

在使用 UDF 資源時,請考慮以下幾點:

  • 確保 UDF 有完整的文件,並有明確的參數描述和回傳類型。
  • 在應用程式程式碼中優雅地處理 UDF 錯誤,包括參數驗證與例外處理。
  • 在部署前,先在應用程式上下文中測試 UDF 行為,以驗證預期結果。
  • 在規劃應用程式權限時,請考慮 UDF 對底層資料表或資料來源的依賴性。