Vyvolání funkce

Platí pro:check marked yes Databricks SQL check marked yes 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

  • function_name

    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.

  • argExpr

    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.

  • 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] (.. /.. /_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.

      • 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] (.. /.. /_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é.

      • 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] (.. /.. /_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