將註冊在 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該功能的權限。
新增使用者定義函數(UDF)資源
在你新增 UDF 作為資源之前,請先檢視 應用程式資源的前置條件。
- 當你建立或編輯應用程式時,請切換到 「配置 」步驟。
- 在 應用程式資源 區塊,點擊 + 新增資源。
- 選擇 UC 函式 作為資源類型。
- 從工作區可用的函式中選擇一個 UDF。 該函式必須已在 Unity 目錄中註冊。
- 選取應用程式的權限層級:
-
可執行: 授權應用程式執行 UDF 並依所提供的參數執行。 這與
EXECUTE權限相符。
-
可執行: 授權應用程式執行 UDF 並依所提供的參數執行。 這與
- (可選)指定一個自訂的資源金鑰,這就是你在應用程式設定中參考 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 對底層資料表或資料來源的依賴性。