Dela via


Funktionsanrop

Gäller för: markerad ja Databricks SQL markerad ja 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.

Namngivet parameteranrop

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 select-delmängd av inbyggda funktioner som tillåter flera valfria parametrar, vilket gör anrop av positionsparameter opraktisk. Dessa funktioner kan tillåta ett blandat anrop där en inledande uppsättning parametrar förväntas tilldelas efter position och den avslutande valfria uppsättningen parametrar 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 [, ...] } }

Parametrar

  • function_name

    Namnet på den inbyggda eller användardefinierade funktionen. När du löser en okvalificerad function_name Azure Databricks bör du först överväga en inbyggd eller tillfällig funktion och sedan en funktion i det aktuella schemat.

  • argExpr

    Alla uttryck som implicit kan gjutas till den parameter som det är associerat med.

    Funktionen kan införa ytterligare begränsningar för argumentet, till exempel mandatliteraler, konstanta uttryck eller specifika värden.

  • star_clause

    En förkortning för att namnge alla referensbara kolumner i FROM -satsen, eller en specifik tabellreferenss kolumner eller fält i FROM -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 tabell.

    • TABLE ( table_name )

      Identifierar en tabell som ska skickas till funktionen med namn.

    • TABLE ( fråga )

      Skickar resultatet av query till funktionen.

    • tabellpartitionering

      ! [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 tabellargumentet är partitionerat. Om inte anges bestäms partitioneringen av Azure Databricks.

      • WITH SINGLE PARTITION

        Tabellargumentet är inte partitionerat.

      • partition_expr

        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

      ! [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 i tabellargumentet skickas till funktionen.

      Som standard är ordningen odefinierad.

      • order_by_expr

        Ett eller flera uttryck. Varje uttryck kan bestå av kolumner som presenteras i tabellargumentet, literaler, parametrar, variabler och deterministiska funktioner.

  • namedParameter

    ! [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