Bagikan melalui


Pemanggilan fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Pemanggilan fungsi menjalankan fungsi bawaan atau fungsi yang ditentukan pengguna setelah mengaitkan argumen ke parameter fungsi.

Azure Databricks mendukung pemanggilan parameter secara posisi maupun secara bernama.

Pemanggilan parameter posisi

Setiap argumen ditetapkan ke parameter yang cocok pada posisi yang ditentukan.

Notasi ini dapat digunakan oleh semua fungsi kecuali jika secara eksplisit didokumentasikan bahwa pemanggilan parameter bernama diperlukan.

Jika fungsi mendukung parameter opsional, parameter berikut yang tidak mendapatkan argumen akan diatur ke nilai default.

Pemanggilan parameter bernama

Argumen secara eksplisit ditetapkan ke parameter menggunakan nama parameter yang diterbitkan oleh fungsi.

Notasi ini harus digunakan untuk subset tertentu dari fungsi bawaan yang memungkinkan banyak parameter opsional, membuat pemanggilan parameter posisi tidak praktis. Fungsi-fungsi ini dapat memungkinkan pemanggilan campuran di mana sekumpulan parameter yang mendahului diharapkan ditetapkan berdasarkan posisi dan serangkaian parameter yang mengikuti, secara opsional, ditetapkan berdasarkan nama.

Pemanggilan parameter bernama, termasuk pemanggilan campuran, juga dapat digunakan untuk SQL UDF dan Python UDF.

Sintaks

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 [, ...] } }

Parameter

  • function_name

    Nama fungsi bawaan atau yang ditentukan pengguna. Ketika menyelesaikan function_name yang tidak memenuhi kualifikasi, Azure Databricks pertama-tama akan mempertimbangkan fungsi bawaan atau sementara, kemudian fungsi dalam skema yang sedang aktif.

  • argExpr

    Ekspresi apa pun yang dapat secara implisit ditransmisikan ke parameter yang terkait dengannya.

    Fungsi ini dapat memberlakukan pembatasan lebih lanjut pada argumen seperti mengamanatkan literal, ekspresi konstanta, atau nilai tertentu.

  • star_clause

    Singkatan untuk memberi nama semua kolom yang dapat dirujuk dalam FROM klausa, atau kolom atau bidang referensi tabel tertentu dalam FROM klausa.

  • tabel_argumen

    centang bertanda ya Databricks SQL centang bertanda ya Databricks Runtime 14.0 dan seterusnya

    Menentukan argumen untuk parameter yang merupakan tabel.

    • TABLE ( table_name )

      Mengidentifikasi tabel untuk diteruskan ke fungsi berdasarkan nama.

    • TABLE ( kueri )

      Meneruskan hasil query ke fungsi .

    • pemartisian tabel

      periksa centang ya Databricks SQL periksa centang ya Databricks Runtime 14.1 ke atas

      Secara opsional menentukan bahwa argumen tabel dipartisi. Jika tidak ditentukan, pemartisian ditentukan oleh Azure Databricks.

      • WITH SINGLE PARTITION

        Argumen tabel tidak dipartisi.

      • partition_expr

        Satu atau beberapa ekspresi yang menentukan cara mempartisi argumen tabel. Setiap ekspresi dapat terdiri dari kolom yang disajikan dalam argumen tabel, literal, parameter, variabel, dan fungsi deterministik.

    • table-ordering

      periksa centang ya Databricks SQL periksa centang ya Databricks Runtime 14.1 ke atas

      Secara opsional menentukan urutan di mana baris hasil dari setiap partisi argumen tabel diteruskan ke fungsi.

      Secara default, urutan tidak terdefinisi.

      • order_by_expr

        Satu atau beberapa ekspresi. Setiap ekspresi dapat terdiri dari kolom yang disajikan dalam argumen tabel, literal, parameter, variabel, dan fungsi deterministik.

  • namedParameter

    centang bertanda ya Databricks SQL centang bertanda ya Databricks Runtime 14.0 dan seterusnya

    Nama tidak memenuhi syarat dari parameter yang argExpr ditetapkan.

    Notasi parameter dengan nama didukung untuk SQL UDF, Python UDF, dan fungsi bawaan tertentu.

Contoh

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