Функция-псевдоним
Функция-псевдоним регистрирует новую сигнатуру для существующей функции или фрагмента выражения, позволяя вызывать их под другим именем. С помощью функций-псевдонимов можно скрыть различия в именах функций при переносе запросов из разнородных баз данных, а также заменить сложный фрагмент выражения кратким вызовом функции.
Понятие
По сути, функция-псевдоним представляет собой новую сигнатуру, зарегистрированную в системе для функции или фрагмента выражения. Вызов псевдонима эквивалентен вызову базового выражения, на которое он указывает.
Как и другие пользовательские функции, функции-псевдонимы поддерживают две области действия:
| Область действия | Область регистрации | Способ вызова |
|---|---|---|
LOCAL | Текущая база данных | Для вызова из другой базы данных используйте полное имя <database name>.<function name> |
GLOBAL | Глобальная | Можно вызывать непосредственно по имени функции из любой базы данных |
Сценарии использования
Сценарий 1: создание псевдонимов функций при миграции из разнородных баз данных
При миграции системы существующие запросы могут быть перенесены из другой системы баз данных. В таких запросах часто встречаются функции, которые работают так же, как функции Doris, но называются иначе.
Создав в Doris функцию-псевдоним с тем же именем, что и у функции в исходной базе данных, можно выполнить миграцию прозрачно для пользователя, не переписывая каждый оператор SQL по отдельности.
Сценарий 2: упрощение сложных запросов
В сложных аналитических сценариях как внутри одного оператора, так и в разных операторах часто встречается большое количество повторяющихся фрагментов выражений.
Создав функцию-псевдоним для такого сложного выражения, можно:
- Упростить написание запросов.
- Улучшить читаемость SQL и облегчить его сопровождение.
- Снизить затраты на сопровождение, связанные с несогласованностью повторяющихся выражений.
Поддерживаемые возможности
Требования к выражениям
В настоящее время корневой узел базового выражения, на которое указывает функция-псевдоним, должен быть выражением вызова функции.
Допустимые примеры:
-- Create an alias function named func with parameters INT, INT. The underlying expression is abs(foo + bar).
CREATE ALIAS FUNCTION func(INT, INT) WITH PARAMETER(foo, bar) AS abs(foo + bar);
-- Create an alias function named func with parameters DATETIMEV2(3), INT. The underlying expression is date_trunc(days_sub(foo, bar), 'day').
CREATE ALIAS FUNCTION func(DATETIMEV2(3), INT) WITH PARAMETER (foo, bar) AS date_trunc(days_sub(foo, bar), 'day');
Недопустимый пример:
-- The root expression is not a function but an arithmetic operator.
CREATE ALIAS FUNCTION func(INT, INT) WITH PARAMETER(foo, bar) AS foo + bar;
Требования к параметрам
В настоящее время параметры функции-псевдонима должны соответствовать следующим двум условиям:
- Переменное число параметров не поддерживается.
- Необходим хотя бы один параметр.