Chiamata di funzione
Si applica a: Databricks SQL Databricks Runtime
Una chiamata di funzione esegue una funzione incorporata o una funzione definita dall'utente dopo aver associato gli argomenti al parametersdella 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 parametersfacoltative, le parameters finali per le quali non sono stati specificati argomenti, vengono predefinite.
Chiamata di parametri denominati
Gli argomenti vengono assegnati in modo esplicito a parameters usando i nomi dei parametri pubblicati dalla funzione.
Questa notazione deve essere usata per un subset di select di funzioni predefinite che consentono numerosi parametersfacoltativi, rendendo poco pratica la chiamata al parametro posizionale. Queste funzioni possono consentire un'invocazione mista where, in cui un set iniziale di parameters viene assegnato per posizione e il set facoltativo di parameters viene assegnato per 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 [, ...] } }
Parameters
-
Nome della funzione predefinita o definita dall'utente. Quando si risolve un
function_name
non qualificato, Azure Databricks considererà prima una funzione predefinita o temporanea e quindi una funzione nel schemacorrente. -
Qualsiasi espressione a cui è possibile eseguire il cast implicito al parametro a cui è associato.
La funzione può imporre ulteriori restrizioni all'argomento, imponendo valori letterali, espressioni costantio parametri specifici values.
-
Una sintassi abbreviata per denominare tutti i columns a cui è possibile fare riferimento nella clausola
FROM
o un columns o campi specifici del riferimento table nella clausolaFROM
. 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 è un table.
TABLE
( table_name )Identifica un table da passare alla funzione in base al nome.
TABLE
( query )Passa il risultato di
query
alla funzione .table- partizionamento
! [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 table è partizionato. Se non specificato, il partizionamento viene determinato da Azure Databricks.
WITH SINGLE PARTITION
L'argomento table non è partizionato.
-
Una o più espressioni che definiscono come partition l'argomento table. Ogni espressione può essere costituita da columns presenta nell'argomento table, valori letterali, parameters, 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 di risultati di ciascun partition dell'argomento table vengono passate alla funzione.
Per impostazione predefinita, l'ordine non è definito.
-
Una o più espressioni. Ogni espressione può essere composta da columns presente nell'argomento table, valori letterali, parameters, variabili e funzioni deterministiche.
-
-
! [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
Articoli correlati
- Espressione SQL
- Funzioni predefinite
-
(SQL e Python) - CREATE FUNCTION (Esterno)
- * (stella) clausola