将用户定义的函数 (UDF) 资源添加到 Databricks 应用

将 Unity 目录中注册 的用户定义函数(UDF) 添加为 Databricks 应用资源,使应用能够执行已注册的 SQL 和 Python 函数。 UDF 提供可重用的业务逻辑、数据转换和自定义操作,这些操作可以通过集中治理在整个组织中共享。

特权要求

若要运行 UDF,应用的服务主体必须在父目录上具有USE CATALOG特权,在父架构上具有USE SCHEMA特权,并在函数上具有EXECUTE特权。 添加 UDF 资源时,Azure Databricks 会自动向应用的服务主体授予这些权限。

要使此自动授予成功,对于每个权限,以下条件之一必须为真:

  • 对于 USE CATALOG 所有帐户用户都对目录具有 USE CATALOG 权限,或者你对目录具有 MANAGE 特权。
  • 对于 USE SCHEMA 所有帐户用户都对架构具有 USE SCHEMA 权限,或者你对架构拥有 MANAGE 权限。
  • 对于 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 依赖关系。