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 posisi serta pemanggilan parameter bernama.

Pemanggilan parameter posisi

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

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

Jika fungsi mendukung parameter opsional, parameter berikutnya yang tidak ada argumen yang telah ditentukan, defaultnya.

Pemanggilan parameter bernama

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

Notasi ini harus digunakan untuk subset fungsi bawaan tertentu yang memungkinkan banyak parameter opsional, membuat pemanggilan parameter posisi tidak praktis. Fungsi-fungsi ini dapat memungkinkan pemanggilan campuran di mana sekumpulan parameter terkemuka diharapkan ditetapkan oleh posisi dan set parameter opsional berikutnya 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. Saat menyelesaikan Azure Databricks yang tidak memenuhi syarat function_name , pertama-tama akan mempertimbangkan fungsi bawaan atau sementara, lalu fungsi dalam skema saat ini.

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

  • table_argument

    ! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks SQL! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 ke atas)

    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

      ! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks SQL! [cek ditandai ya] (.. /.. /_static/images/icons/check.png 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

      ! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks SQL! [cek ditandai ya] (.. /.. /_static/images/icons/check.png 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

    ! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks SQL! [cek ditandai ya] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 ke atas)

    Nama parameter yang tidak memenuhi syarat yang argExpr ditetapkan.

    Notasi parameter bernama 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