Перейти к содержимому
Последнее обновление

Функция-псевдоним

Функция-псевдоним регистрирует новую сигнатуру для существующей функции или фрагмента выражения, позволяя вызывать их под другим именем. С помощью функций-псевдонимов можно скрыть различия в именах функций при переносе запросов из разнородных баз данных, а также заменить сложный фрагмент выражения кратким вызовом функции.

Понятие​

По сути, функция-псевдоним представляет собой новую сигнатуру, зарегистрированную в системе для функции или фрагмента выражения. Вызов псевдонима эквивалентен вызову базового выражения, на которое он указывает.

Как и другие пользовательские функции, функции-псевдонимы поддерживают две области действия:

Область действияОбласть регистрацииСпособ вызова
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;

Требования к параметрам​

В настоящее время параметры функции-псевдонима должны соответствовать следующим двум условиям:

  • Переменное число параметров не поддерживается.
  • Необходим хотя бы один параметр.