Funktionsanrop
Gäller för: Databricks SQL Databricks Runtime
En funktionsanrop kör en inbyggd funktion eller en användardefinierad funktion efter att ha associerat argument med funktionens parameters.
Azure Databricks stöder anrop av positionsparametrar och namngivna parameteranrop.
Anrop av positionsparameter
Varje argument tilldelas till den matchande parametern vid den position som anges.
Den här notationen kan användas av alla funktioner om det inte uttryckligen dokumenteras att namngivna parameteranrop krävs.
Om funktionen stöder valfria parametersär avslutande parameters för vilka inga argument har angetts standard.
Namngivet parameteranrop
Argument tilldelas uttryckligen till parameters med hjälp av parameternamnen som publiceras av funktionen.
Den här notationen måste användas för en select delmängd av inbyggda funktioner som tillåter många valfria parameters, vilket gör anrop av positionsparameter opraktiskt. Dessa funktioner kan tillåta att en blandad anrop where där en inledande set av parameters förväntas att tilldelas baserat på position, och den efterföljande, valfria set av parameters efter namn.
Namngivna parameteranrop, inklusive blandat anrop, kan också användas för SQL UDF och Python UDF.
Syntax
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
-
Namnet på den inbyggda eller användardefinierade funktionen. När du löser en okvalificerad
function_name
bör Azure Databricks först överväga en inbyggd eller tillfällig funktion och sedan en funktion i den aktuella schema. -
Alla uttryck som implicit kan gjutas till den parameter som det är associerat med.
Funktionen kan införa ytterligare begränsningar för argumentet, såsom att kräva bokstavliga värden, konstanta uttryckeller specifika values.
-
En förkortning för att namnge alla referensbara columns i
FROM
-satsen, eller en specifik table-referens columns eller fält iFROM
-satsen. table_argument
! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks SQL ! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 och senare)
Anger ett argument för en parameter som är en table.
TABLE
( table_name )Identifierar en table som ska skickas till funktionen med namn.
TABLE
( fråga )Skickar resultatet av
query
till funktionen.table-partitionering
! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks SQL ! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 och senare)
Du kan också ange att argumentet table partitioneras. Om inte anges bestäms partitioneringen av Azure Databricks.
WITH SINGLE PARTITION
Argumentet table är inte partitionerat.
-
Ett eller flera uttryck som definierar hur du partition argumentet table. Varje uttryck kan bestå av columns presenteras i argumentet table, literaler, parameters, variabler och deterministiska funktioner.
table-ordering
! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks SQL ! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 och senare)
Du kan också ange en ordning i vilken resultatraderna för varje partition av argumentet table skickas till funktionen.
Som standard är ordningen odefinierad.
-
Ett eller flera uttryck. Varje uttryck kan bestå av columns presenteras i argumentet table, literaler, parameters, variabler och deterministiska funktioner.
-
-
! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks SQL ! [kontrollera markerat ja](.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 och senare)
Det okvalificerade namnet på en parameter som
argExpr
tilldelas.Namngiven parameter notation stöds för SQL UDF, Python UDF och specifika inbyggda funktioner.
Exempel
-- 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