Pemanggilan fungsi
Berlaku untuk: Databricks SQL 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
-
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. -
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.
-
Singkatan untuk memberi nama semua kolom yang dapat dirujuk dalam
FROM
klausa, atau kolom atau bidang referensi tabel tertentu dalamFROM
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.
-
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.
-
Satu atau beberapa ekspresi. Setiap ekspresi dapat terdiri dari kolom yang disajikan dalam argumen tabel, literal, parameter, variabel, dan fungsi deterministik.
-
-
! [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