Sdílet prostřednictvím


Vyvolání funkce

Platí pro:zaškrtnuto ano Databricks SQL zaškrtnuto ano 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 musí být použita pro vybranou podmnožinu předdefinovaných funkcí, které mají řadu volitelných parametrů, což činí poziční volání parametrů nepraktické. Tyto funkce mohou umožňovat smíšené vyvolání, kde 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živatelsky definované SQL a Python UDF.

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

  • function_name

    Název předdefinované nebo uživatelem definované funkce. Při řešení nekvalifikované function_name Azure Databricks nejprve vezme v úvahu integrovanou nebo dočasnou funkci a pak funkci v aktuálním schématu.

  • argExpr

    Libovolný výraz, který lze implicitně přetypovat na parametr, ke kterému je přidružen.

    Funkce může vyžadovat dodatečná omezení argumentu, jako je vyžadování literálů, konstantních výrazůnebo konkrétních hodnot.

  • star_clause

    Zkráceně pojmenujte všechny odkazovatelné sloupce v FROM klauzuli nebo sloupce nebo pole konkrétního odkazu na tabulku v FROM klauzuli.

  • table_argument

    zaškrtnuto ano Databricks SQL zaškrtnuto ano Databricks Runtime 14.0 a vyšší

    Určuje argument pro parametr, který je tabulkou.

    • TABLE ( table_name )

      Identifikuje tabulku podle názvu, která se má předat funkci.

    • TABLE ( dotaz )

      Předá výsledek query do funkce.

    • dělení tabulek

      zaškrtnuto ano Databricks SQL zaškrtnuto ano 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.

      • partition_expr

        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 Databricks SQL zaškrtnuto ano 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é.

      • order_by_expr

        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.

  • namedParameter

    zaškrtnuto ano Databricks SQL zaškrtnuto ano Databricks Runtime 14.0 a vyšší

    Nekvalifikovaný název parametru, ke kterému argExpr je přiřazen.

    Zápis pojmenovaných parametrů je podporovaný pro UDF SQL, UDF Python a konkrétní vestavěné 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