Delen via


Functie aanroepen

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Een functieaanroep voert een ingebouwde functie uit of een door de gebruiker gedefinieerde functie nadat argumenten zijn gekoppeld aan de parametersvan de functie.

Azure Databricks biedt ondersteuning voor aanroepen van positionele parameters en benoemde parameteraanroepen.

Aanroepen van positionele parameters

Elk argument wordt toegewezen aan de overeenkomende parameter op de positie die wordt opgegeven.

Deze notatie kan door alle functies worden gebruikt, tenzij expliciet wordt gedocumenteerd dat aanroepen van benoemde parameters is vereist.

Als de functie optionele parametersondersteunt, worden afsluitende parameters waarvoor geen argumenten zijn opgegeven, standaard ingesteld.

Aanroepen van benoemde parameters

Argumenten worden expliciet toegewezen aan parameters met behulp van de parameternamen die door de functie zijn gepubliceerd.

Deze notatie moet worden gebruikt voor een select subset van ingebouwde functies die talloze optionele parameterstoestaan, waardoor positionele parameteraanroep onpraktisch wordt. Met deze functies kan een gemengde aanroepwhere een leidende set van parameters naar verwachting worden toegewezen op basis van positie en de achteraan geplaatste, optionele set van parameters op naam.

Aanroepen van benoemde parameters, inclusief gemengde aanroep, kunnen ook worden gebruikt voor SQL UDF en Python UDF.

Syntaxis

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

    De naam van de ingebouwde of door de gebruiker gedefinieerde functie. Bij het afhandelen van een niet-gekwalificeerde function_name zal Azure Databricks eerst een ingebouwde of tijdelijke functie overwegen en vervolgens een functie in de huidige schema.

  • argExpr

    Elke expressie die impliciet kan worden gecast naar de parameter waaraan deze is gekoppeld.

    De functie kan verdere beperkingen opleggen aan het argument, zoals het vereisen van letterlijke waarden, constante expressies, of specifieke values.

  • star_clause

    Een verkorte naam voor alle verwijzingsbare columns in de FROM component, of een specifieke tablecolumns of velden in de FROM component.

  • table_argument

    ! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks SQL! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 en hoger)

    Hiermee geeft u een argument op voor een parameter die een tableis.

    • TABLE ( table_name )

      Identificeert een table die moet worden doorgegeven aan de functie door zijn naam.

    • TABLE ( query )

      Geeft het resultaat van query de functie door.

    • table-partitionering

      ! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks SQL! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 en hoger)

      Hiermee geeft u optioneel aan dat het argument table is gepartitioneerd. Als de partitionering niet is opgegeven, wordt bepaald door Azure Databricks.

      • WITH SINGLE PARTITION

        Het argument table is niet gepartitioneerd.

      • partition_expr

        Een of meer expressies die definiƫren hoe partition het table argument. Elke expressie kan bestaan uit presentaties van columns in het argument table, literalen, parameters, variabelen en deterministische functies.

    • table-ordering

      ! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks SQL! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 en hoger)

      Hiermee geeft u desgewenst een volgorde op waarin de resultaatrijen van elke partition van het argument table worden doorgegeven aan de functie.

      Standaard is de volgorde niet gedefinieerd.

      • order_by_expr

        Een of meer expressies. Elke expressie kan samengesteld zijn uit presentaties van columns in het argument table, literalen, parameters, variabelen en deterministische functies.

  • namedParameter

    ! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks SQL! [vinkje als ja aan](.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 en hoger)

    De niet-gekwalificeerde naam van een parameter waaraan de argExpr parameter is toegewezen.

    Benoemde parameter notatie wordt ondersteund voor SQL UDF, Python UDF en specifieke ingebouwde functies.

Voorbeelden

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