Vyvolání funkce
Platí pro: Databricks SQL Databricks Runtime
Vyvolání funkce spustí integrovanou funkci nebo uživatelem definovanou funkci po přidružení argumentů k parametrům funkce.
Azure Databricks podporuje vyvolání pozičních parametrů i volání pojmenovaných parametrů.
Vyvolání pozičního parametru
Každému argumentu se přiřadí odpovídající parametr na pozici, ve které je zadaný.
Tuto notaci můžou používat všechny funkce, pokud není explicitně zdokumentováno, že se vyžaduje vyvolání pojmenovaného parametru.
Pokud funkce podporuje volitelné parametry, koncové parametry, pro které nebyly zadány žádné argumenty, jsou výchozí.
Vyvolání pojmenovaného parametru
Argumenty jsou explicitně přiřazeny k parametrům pomocí názvů parametrů publikovaných funkcí.
Tato notace se musí použít pro výběrovou podmnožinu předdefinovaných funkcí, které umožňují řadu volitelných parametrů, což znemožňuje vyvolání pozičních parametrů. Tyto funkce mohou umožňovat smíšené vyvolání , kdy se očekává přiřazení úvodní sady parametrů podle pozice a koncové volitelné sady parametrů podle názvu.
Pojmenované vyvolání parametru, včetně smíšeného vyvolání, lze také použít pro uživatelem definované uživatelem SQL a uživatelem definované uživatelem Pythonu.
Syntaxe
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 [, ...] } }
Parametry
-
Název předdefinované nebo uživatelem definované funkce. Při řešení nekvalifikované
function_name
služby Azure Databricks se nejprve vezme v úvahu integrovaná nebo dočasná funkce a pak funkce v aktuálním schématu. -
Libovolný výraz, který lze implicitně přetypovat na parametr, ke kterému je přidružen.
Funkce může nutit další omezení argumentu, jako je například mandování literálů, konstantních výrazů nebo konkrétních hodnot.
-
Zkráceně pojmenujte všechny odkazovatelné sloupce v
FROM
klauzuli nebo sloupce nebo pole konkrétního odkazu na tabulku vFROM
klauzuli. table_argument
! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks SQL ! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 a novější)
Určuje argument pro parametr, který je tabulkou.
TABLE
( table_name )Identifikuje tabulku, která se má funkci předat podle názvu.
TABLE
( dotaz )Předá výsledek
query
funkce.dělení tabulek
! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks SQL ! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 a novější)
Volitelně určuje, že je argument tabulky rozdělený na oddíly. Pokud není zadané dělení, určuje Azure Databricks.
WITH SINGLE PARTITION
Argument tabulky není rozdělený na oddíly.
-
Jeden nebo více výrazů definujících způsob rozdělení argumentu tabulky. Každý výraz se může skládat ze sloupců v argumentu tabulky, literálech, parametrech, proměnných a deterministických funkcích.
table-ordering
! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks SQL ! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 a novější)
Volitelně určuje pořadí, ve kterém se do funkce předají výsledné řádky každého oddílu argumentu tabulky.
Ve výchozím nastavení je pořadí nedefinované.
-
Jeden nebo více výrazů Každý výraz se může skládat ze sloupců v argumentu tabulky, literálech, parametrech, proměnných a deterministických funkcích.
-
-
! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks SQL ! [zaškrtnuto ano] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 a novější)
Nekvalifikovaný název parametru, ke kterému
argExpr
je přiřazen.Zápis pojmenovaných parametrů je podporovaný pro uživatelem definované uživatelem SQL, uživatelem definované uživatelem Pythonu a konkrétní předdefinované funkce.
Příklady
-- 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