Вызов функции

Область применения:check marked yes Databricks SQL check marked yes Databricks Runtime

Вызов функции выполняет встроенную функцию или определяемую пользователем функцию после связывания аргументов с параметрами функции.

Azure Databricks поддерживает вызов позиционного параметра, а также вызов именованных параметров.

Вызов позиционного параметра

Каждый аргумент назначается параметру сопоставления по указанному расположению.

Эта нотация может использоваться всеми функциями, если не требуется явно документировать вызов именованных параметров.

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

Вызов именованного параметра

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

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

Вызов именованных параметров, включая смешанный вызов, также можно использовать для UDF SQL и UDF Python.

Синтаксис

function_name ( [ argExpr | table_argument | star_clause ] [, ...]
                [ namedParameter => [ argExpr | table_argument ] [, ...] )

table_argument
  { TABLE ( { table_name | query } )
    [ table_partition ]
    [ table_order ]

table_partitioning
  { WITH SINGLE PARTITION |
    { PARTITION | DISTRIBUTE } BY { partition_expr | ( partition_expr [, ...] ) } }

table_ordering
  { { ORDER | SORT } BY { order_by_expr | ( order_by_expr [, ...] } }

Параметры

  • function_name

    Имя встроенной или пользовательской функции. При разрешении неквалифицированной function_name функции Azure Databricks сначала рассмотрите встроенную или временную функцию, а затем функцию в текущей схеме.

  • argExpr

    Любое выражение, которое может быть неявно приведение к параметру, с которым он связан.

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

  • star_clause

    Короткое название всех ссылочных столбцов в FROM предложении или столбцов или полей конкретной таблицы в предложении FROM .

  • table_argument

    ! [проверка помечено да](.). /.. /_static/images/icons/проверка.png Databricks SQL ![ проверка помечены да](.). /.. /_static/images/icons/проверка.png Databricks Runtime 14.0 и более поздней версии)

    Указывает аргумент для параметра, который является таблицей.

    • TABLE ( table_name )

      Определяет таблицу для передачи функции по имени.

    • TABLE ( запрос )

      Передает результат query функции.

    • Секционирование таблиц

      ! [проверка помечено да](.). /.. /_static/images/icons/проверка.png Databricks SQL ![ проверка помечены да](.). /.. /_static/images/icons/проверка.png Databricks Runtime 14.1 и более поздних версий)

      При необходимости указывает, что аргумент таблицы секционирован. Если секционирование не указано, определяется Azure Databricks.

      • WITH SINGLE PARTITION

        Аргумент таблицы не секционирован.

      • partition_expr

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

    • table-ordering

      ! [проверка помечено да](.). /.. /_static/images/icons/проверка.png Databricks SQL ![ проверка помечены да](.). /.. /_static/images/icons/проверка.png Databricks Runtime 14.1 и более поздних версий)

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

      По умолчанию порядок не определен.

      • order_by_expr

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

  • namedParameter

    ! [проверка помечено да](.). /.. /_static/images/icons/проверка.png Databricks SQL ![ проверка помечены да](.). /.. /_static/images/icons/проверка.png Databricks Runtime 14.0 и более поздней версии)

    Неквалифицированное имя параметра, argExpr которому назначается.

    Нотация именованных параметров поддерживается для sql UDF, UDF Python и конкретных встроенных функций.

Примеры

-- The substr function has three parameter and expects arguents to be passed by position.
> SELECT substr('hello', 3, 2);
  ll

-- The last parameter, the length, of substr is optional, when it is ommited it retrns the remainder of the string.
> SELECT substr('hello', 3);
  llo

-- Use the star clause to turn a set of columns into an array.
> SELECT array(*) FROM VALUES (1, 2, 3) AS t(a, b, c);
  [1, 2, 3]

-- The second parameter, start position, is not optional
> SELECT substr('hello');
  Error: WRONG_NUM_ARGS

-- read_files() is a function that accepts numerous parameters, many of which depend on the data source
-- The first parameter is positional, after that use named parameter invocation
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'csv',
    schema => 'id int, ts timestamp, event string');

-- cloud_files_state() is a function that expects a table name as an argument
> SELECT path FROM cloud_files_state(TABLE(mytable));
  /some/input/path
  /other/input/path

-- Invoking a SQL UDF using named parameter invocation
> CREATE TEMPORARY FUNCTION increase(base INT, factor FLOAT DEFAULT 1) RETURNS INT RETURN base * factor;

-- Out of order assignment
> SELECT increase(factor => 1.2, base => 100);
 120

-- Mixed invocation
> SELECT increase(100, factor => 1.3);
 130

-- Using default
> SELECT increase(base => 100);
 100

-- No position invocation after named invocation is allowed
> SELECT increase(base => 100, 1.4);
 Error: UNEXPECTED_POSITIONAL_ARGUMENT