Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Ett funktionsanrop kör en inbyggd funktion eller en användardefinierad funktion efter att argument har associerats med funktionens parametrar.
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 parametrar är efterföljande parametrar för vilka inga argument har angetts standard.
Anrop med namngivna parametrar
Argument tilldelas uttryckligen till parametrar med hjälp av de parameternamn som publiceras av funktionen.
Den här notationen måste användas för en specifik delmängd av inbyggda funktioner som tillåter många valfria parametrar, vilket gör anrop med positionsparametrar opraktiskt. Dessa funktioner kan tillåta blandade anrop där en inledande uppsättning parametrar förväntas tilldelas baserat på position, och den avslutande, valfria uppsättningen parametrar baserat på 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 [, ...] } }
Parameterar
-
Namnet på den inbyggda eller användardefinierade funktionen. När du löser en okvalificerad
function_namebör Azure Databricks först överväga en inbyggd eller tillfällig funktion och sedan en funktion i det aktuella schemat. -
Alla uttryck som kan konverteras implicit till den parameter som det är associerat med.
Funktionen kan införa ytterligare begränsningar för argumentet, till exempel mandatliteraler, konstanta uttryckeller specifika värden.
-
En förkortning för att namnge alla referensbara kolumner i
FROM-satsen, eller en specifik tabellreferenss kolumner eller fält iFROM-satsen. table_argument
Databricks SQL
Databricks Runtime 14.0 och senareAnger ett argument för en parameter som är en tabell.
TABLE( table_name )Identifierar en tabell som ska skickas till funktionen med namn.
TABLE( fråga )Skickar resultatet av
querytill funktionen.tabellpartitionering
Databricks SQL
Databricks Runtime 14.1 och överDu kan också ange att tabellargumentet är partitionerat. Om inte anges bestäms partitioneringen av Azure Databricks.
WITH SINGLE PARTITIONTabellargumentet är inte partitionerat.
-
Ett eller flera uttryck som definierar hur du partitionerar tabellargumentet. Varje uttryck kan bestå av kolumner som presenteras i tabellargumentet, literaler, parametrar, variabler och deterministiska funktioner.
table-ordering
Databricks SQL
Databricks Runtime 14.1 och överDu kan också ange en ordning i vilken resultatraderna för varje partition i tabellargumentet skickas till funktionen.
Som standard är ordningen odefinierad.
-
Ett eller flera uttryck. Varje uttryck kan bestå av kolumner som presenteras i tabellargumentet, literaler, parametrar, variabler och deterministiska funktioner.
-
-
Databricks SQL
Databricks Runtime 14.0 och senareDet okvalificerade namnet på en parameter som
argExprtilldelas.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