Поделиться через


Добавить ресурс пользовательской функции (UDF) в приложение Databricks

Добавьте определяемые пользователем функции (UDFS), зарегистрированные в каталоге Unity в качестве ресурсов Databricks Apps, чтобы разрешить приложению выполнять зарегистрированные функции SQL и Python. Пользовательские функции обеспечивают многократно используемую бизнес-логику, преобразования данных и пользовательские операции, которые можно использовать совместно в вашей организации с централизованным управлением.

Требования к привилегиям

Чтобы запустить UDF, служебный субъект приложения должен иметь USE CATALOG привилегии в родительском каталоге, USE SCHEMA привилегии в родительской схеме и EXECUTE привилегии в функции. При добавлении ресурса UDF Azure Databricks автоматически предоставляет эти привилегии субъекту-службе приложения.

Для успешного предоставления этой привилегии одно из следующих условий должно выполняться для каждой привилегии:

  • Для USE CATALOG: у всех пользователей учетной записи есть USE CATALOG привилегия на каталоге или у вас есть MANAGE привилегия на каталоге.
  • Для USE SCHEMA: либо у всех пользователей учетной записи есть привилегия USE SCHEMA на схему, либо у вас есть привилегия MANAGE на схему.
  • Для EXECUTE: у всех пользователей учетной записи есть привилегия EXECUTE на функцию или у вас есть привилегия MANAGE на функцию.

Ознакомьтесь с привилегиями каталога Unity и защищаемыми объектами.

Добавить ресурс определяемой пользователем функции (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 от базовых таблиц или источников данных.