- С помощью SQL
- С помощью интерфейса и собственного кода (публичная бета)
Пользовательские функции SQL
CREATE FUNCTION на основе лямбда-выражения.
В этом примере мы создадим простую исполняемую пользовательскую функцию isBusinessHours.
Функция будет проверять, попадает ли указанная временная метка в стандартные рабочие часы, и возвращать true, если да, и false — если нет.
- Войдите в Cloud Console и откройте консоль SQL
- Напишите следующий SQL-запрос, чтобы создать функцию
isBusinessHours:
- Чтобы протестировать только что созданную UDF, выполните следующую команду:
- Вы можете использовать команду
DROP FUNCTION, чтобы удалить только что созданную UDF:
- Настройки уровня сеанса (заданные через оператор
SET) не передаются в контекст выполнения UDF - Настройки профиля пользователя не наследуются UDF
- Настройки уровня запроса не применяются при выполнении UDF
Пользовательские функции, созданные через интерфейс
isBusinessHours, которая проверяет, попадает ли заданная временная метка в обычные рабочие часы.
Ранее мы создавали её с помощью SQL, а на этот раз создадим её с помощью Python и настроим через интерфейс.
Создайте Python-файл
Создайте новый файлmain.py на локальной машине:requirements.txt со списком зависимостей. Например:ClickHouse Cloud ожидает, что в zip-архиве, который вы загрузите через интерфейс на следующем шаге, будет файл
main.py.
Если назвать файл иначе, возникнет ошибка.Пакеты зависимостей и локальные файлы
Чтобы включить пакеты зависимостей и любые дополнительные локальные файлы (например, wheel-файлы, файлы конфигурации или файлы данных), поместите их в тот же каталог, где находятсяmain.py и requirements.txt. При создании ZIP-архива включите в него все файлы:os.path.dirname(os.path.abspath(__file__)). Это возвращает абсолютный path к каталогу, в котором находится ваш main.py внутри ZIP-архива, что позволяет получать доступ к другим упакованным файлам:- Получить доступ к файлам конфигурации, включённым в ваш UDF
- Загрузить wheel-пакеты для пользовательских зависимостей
- Указать дополнительные скрипты или файлы данных
Создание UDF через интерфейс
- На главной странице Cloud Console нажмите имя вашей организации в меню в левом нижнем углу.
- Выберите в меню Пользовательские функции.
- На странице пользовательских функций нажмите Настроить UDF. Справа откроется панель конфигурации.
- Введите имя функции. В этом примере используйте
isBusinessHours. - Выберите тип функции: Executable pool или Executable:
- Executable pool: Поддерживается пул постоянных процессов, и для операций чтения процесс берётся из этого пула.
- Executable: Скрипт запускается для каждого запроса.
- В этом примере используйте настройки по умолчанию. Полный список параметров конфигурации см. в разделе Исполняемые пользовательские функции.
- Нажмите Выбрать файл, чтобы загрузить файл
.zip, созданный в начале этого руководства. - Добавьте новый аргумент. В этом примере добавьте аргумент
timestampс типомDateTime. - Выберите тип возвращаемого значения. В этом примере выберите
Bool. - Нажмите Создать UDF. В диалоговом окне отобразится текущий статус сборки.
- Если возникнут какие-либо проблемы, статус изменится на ошибка.
- В противном случае статус последовательно изменится с сборка на подготовка. Для завершения подготовки ваш сервис должен быть активен. Если сервис находится в состоянии бездействия, нажмите Пробудить сервис на панели Сведения о UDF рядом с именем сервиса.
- После завершения статус изменится на развернуто.
Протестируйте свою UDF
- вернитесь на главную страницу SQL Console, нажав в левом верхнем углу страницы Settings - return to your service view
- нажмите SQL Console в меню слева
- введите следующий запрос:
Создайте новую версию
- На главной странице Cloud Console нажмите имя своей организации в меню в левом нижнем углу.
- В меню выберите Пользовательские функции.
- Для UDF
isBusinessHoursнажмите на три точки в разделе Действия, затем выберите Создать новую версию - Загрузите ZIP-архив с измененным кодом или измените настройки, затем нажмите Создать новую версию