Chiamata di funzione

Si applica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Una chiamata di funzione esegue una funzione predefinita o una funzione definita dall'utente dopo l'associazione di argomenti ai parametri della funzione.

Azure Databricks supporta la chiamata di parametri posizionali e la chiamata di parametri denominati.

Chiamata al parametro posizionale

Ogni argomento viene assegnato al parametro corrispondente nella posizione in cui è specificato.

Questa notazione può essere usata da tutte le funzioni, a meno che non sia documentata in modo esplicito che la chiamata al parametro denominato sia necessaria.

Se la funzione supporta parametri facoltativi, i parametri finali per i quali non sono stati specificati argomenti, vengono predefiniti.

Chiamata di parametri denominati

Gli argomenti vengono assegnati in modo esplicito ai parametri usando i nomi dei parametri pubblicati dalla funzione.

Questa notazione deve essere usata per un subset selezionato di funzioni predefinite che consentono numerosi parametri facoltativi, rendendo poco pratica la chiamata al parametro posizionale. Queste funzioni possono consentire una chiamata mista in cui un set iniziale di parametri deve essere assegnato in base alla posizione e al set facoltativo di parametri in base al nome.

La chiamata di parametri denominati, inclusa la chiamata mista, può essere usata anche per la funzione definita dall'utente sql e per la funzione definita dall'utente python.

Sintassi

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 [, ...] } }

Parametri

  • function_name

    Nome della funzione predefinita o definita dall'utente. Quando si risolve un'istanza non qualificata function_name di Azure Databricks, si considererà prima una funzione predefinita o temporanea e quindi una funzione nello schema corrente.

  • argExpr

    Qualsiasi espressione a cui è possibile eseguire il cast implicito al parametro a cui è associato.

    La funzione può imporre ulteriori restrizioni all'argomento, ad esempio l'imposizione di valori letterali, espressioni costanti o valori specifici.

  • star_clause

    Una sintassi abbreviata per denominare tutte le colonne a cui è possibile fare riferimento nella FROM clausola oppure le colonne o i campi di un riferimento di tabella specifico nella FROM clausola .

  • table_argument

    ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks SQL ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 e versioni successive)

    Specifica un argomento per un parametro che è una tabella.

    • TABLE ( table_name )

      Identifica una tabella da passare alla funzione in base al nome.

    • TABLE ( query )

      Passa il risultato di query alla funzione .

    • partizionamento di tabelle

      ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks SQL ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 e versioni successive)

      Facoltativamente, specifica che l'argomento tabella è partizionato. Se non specificato, il partizionamento viene determinato da Azure Databricks.

      • WITH SINGLE PARTITION

        L'argomento table non è partizionato.

      • partition_expr

        Una o più espressioni che definiscono come partizionare l'argomento della tabella. Ogni espressione può essere costituita da colonne presenti nell'argomento tabella, valori letterali, parametri, variabili e funzioni deterministiche.

    • table-ordering

      ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks SQL ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 e versioni successive)

      Facoltativamente, specifica un ordine in cui le righe dei risultati di ogni partizione dell'argomento tabella vengono passate alla funzione.

      Per impostazione predefinita, l'ordine non è definito.

      • order_by_expr

        Una o più espressioni. Ogni espressione può essere costituita da colonne presenti nell'argomento tabella, valori letterali, parametri, variabili e funzioni deterministiche.

  • namedParameter

    ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks SQL ! [check contrassegnato sì] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 e versioni successive)

    Nome non qualificato di un parametro a cui è assegnato .argExpr

    La notazione dei parametri denominati è supportata per funzioni definite dall'utente sql, funzioni definite dall'utente Python e funzioni predefinite specifiche.

Esempi

-- 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