Dela via


Funktionsanrop

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

En funktionsanrop kör en inbyggd funktion eller en användardefinierad funktion efter att ha associerat argument med funktionens parameters.

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 parametersär avslutande parameters för vilka inga argument har angetts standard.

Namngivet parameteranrop

Argument tilldelas uttryckligen till parameters med hjälp av parameternamnen som publiceras av funktionen.

Den här notationen måste användas för en select delmängd av inbyggda funktioner som tillåter många valfria parameters, vilket gör anrop av positionsparameter opraktiskt. Dessa funktioner kan tillåta att en blandad anrop where där en inledande set av parameters förväntas att tilldelas baserat på position, och den efterföljande, valfria set av parameters 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 [, ...] } }

Parameters

  • function_name

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

  • 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, såsom att kräva bokstavliga värden, konstanta uttryckeller specifika values.

  • star_clause

    En förkortning för att namnge alla referensbara columns i FROM-satsen, eller en specifik table-referens columns 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 table.

    • TABLE ( table_name )

      Identifierar en table som ska skickas till funktionen med namn.

    • TABLE ( fråga )

      Skickar resultatet av query till funktionen.

    • table-partitionering

      ! [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 argumentet table partitioneras. Om inte anges bestäms partitioneringen av Azure Databricks.

      • WITH SINGLE PARTITION

        Argumentet table är inte partitionerat.

      • partition_expr

        Ett eller flera uttryck som definierar hur du partition argumentet table. Varje uttryck kan bestå av columns presenteras i argumentet table, literaler, parameters, 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 av argumentet table skickas till funktionen.

      Som standard är ordningen odefinierad.

      • order_by_expr

        Ett eller flera uttryck. Varje uttryck kan bestå av columns presenteras i argumentet table, literaler, parameters, 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