Определяемые пользователем функции в каталоге Unity
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Azure Databricks предоставляет собственный синтаксис SQL для регистрации пользовательских функций в схемах, управляемых каталогом Unity. Определяемые пользователем Функции Python в каталоге Unity отличаются в область и поддержке пользовательских файлов PySpark область в записную книжку или SparkSession. См . раздел "Определяемые пользователем скалярные функции " Python".
Полный справочник по языку SQL см. в статье CREATE FUNCTION (SQL и Python).
Сведения о том, как каталог Unity управляет разрешениями для функций, см. в статье CREATE FUNCTION.
Требования
- Databricks Runtime 13.3 LTS или более поздней версии.
- Чтобы использовать код Python в определяемых пользователем файлах, зарегистрированных в каталоге Unity, необходимо использовать бессерверный или профессиональный хранилище SQL или кластер под управлением Databricks Runtime 13.3 LTS или более поздней версии.
- Чтобы разрешить представления, созданные с помощью UDF, зарегистрированного в каталоге Unity, необходимо использовать бессерверное или pro SQL-хранилище.
Пользовательские функции SQL в каталоге Unity
При создании функции SQL с помощью вычислений, настроенных для каталога Unity, функция регистрируется в текущей активной схеме по умолчанию. В следующем примере показан синтаксис, который можно использовать для объявления целевого каталога и схемы для новой функции:
CREATE FUNCTION target_catalog.target_schema.roll_dice()
RETURNS INT
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
COMMENT 'Roll a single 6 sided die'
RETURN (rand() * 6)::INT + 1;
Затем все пользователи с достаточными привилегиями в функции могут использовать функцию в вычислительных средах, настроенных для каталога Unity, как показано в следующем примере:
SELECT target_catalog.target_schema.roll_dice()
Примечание.
Вы можете использовать определяемые пользователем функции, используя для LANGUAGE SQL
возврата таблиц или скалярных значений.
Регистрация UDF Python в каталоге Unity
В Databricks Runtime 13.3 LTS и более поздних версиях можно использовать инструкцию SQL CREATE FUNCTION
для регистрации скалярных пользовательских файлов Python в каталоге Unity.
Внимание
Только хранилища pro и бессерверные хранилища SQL поддерживают определяемые пользователем Службы Python для каталога Unity.
Определяемые пользователем функции Python предназначены для обеспечения полной экспрессивности Python непосредственно в функциях SQL, что позволяет выполнять настраиваемые операции, такие как расширенные преобразования, маскирование данных и хэширование.
Определяемые пользователем Функции Python выполняются в защищенной изолированной среде и не имеют доступа к файловыми системам или внутренним службам.
Пользовательские функции Python, работающие на бессерверных вычислениях или в режиме общего доступа, разрешают сетевой трафик TCP/UDP через порты 80, 443 и 53.
Узнайте , какие определяемые пользователем функции являются наиболее эффективными?.
Примечание.
Синтаксис и семантика для определяемых пользователем файлов Python в каталоге Unity отличаются от определяемых пользователем Python пользователей, зарегистрированных в SparkSession. См . раздел "Определяемые пользователем скалярные функции " Python".
Инструкции, заданные двойными знаками доллара ($$
), как показано в следующем примере кода, используются инструкции, определяемые пользователем Python для каталога Unity.
CREATE FUNCTION target_catalog.target_schema.greet(s STRING)
RETURNS STRING
LANGUAGE PYTHON
AS $$
return f"Hello, {s}"
$$
В следующем примере показано использование этой функции для возврата инструкций приветствия для всех имен, хранящихся в first_name
столбце таблицы с именем students
:
SELECT target_catalog.target_schema.greet(first_name)
FROM students;
Вы можете определить любое количество функций Python в UDF Python, но должно возвращать скалярное значение.
Функции Python должны обрабатывать NULL
значения независимо, и все сопоставления типов должны соответствовать сопоставлениям языка SQL Azure Databricks.
Вы можете импортировать стандартные библиотеки Python, включенные в Azure Databricks, но нельзя включать пользовательские библиотеки или внешние зависимости.
Если каталог или схема не указаны, определяемые пользователем Python, регистрируются в текущей активной схеме.
Следующий пример импортирует библиотеку и использует несколько функций в UDF Python:
CREATE FUNCTION roll_dice(num_dice INTEGER, num_sides INTEGER)
RETURNS INTEGER
LANGUAGE PYTHON
AS $$
import numpy as np
def roll_die(num_sides):
return np.random.randint(num_sides) + 1
def sum_dice(num_dice,num_sides):
return sum([roll_die(num_sides) for x in range(num_dice)])
return sum_dice(num_dice, num_sides)
$$
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по