Fungsi lambda
Berlaku untuk: Databricks SQL Databricks Runtime
Ekspresi parameter yang dapat diteruskan ke fungsi untuk mengontrol perilakunya.
Misalnya, fungsi array_sort menerima fungsi lambda sebagai argumen untuk menentukan urutan sortir kustom.
Sintaks
{ param -> expr |
(param1 [, ...] ) -> expr }
Parameter
paramN
: Pengidentifikasi yang digunakan oleh fungsi induk untuk meneruskan argumen terhadap fungsi lambda.expr
: Setiap referensi ekspresiparamN
sederhana , yang tidak berisi subkueri atau fungsi yang ditentukan pengguna SQL.
Mengembalikan
Jenis hasil ditentukan oleh jenis hasil expr
.
Jika ada lebih dari satu paramN
, nama parameter harus unik. Jenis parameter diatur oleh fungsi pemanggilan.
expression
harus valid untuk jenis ini dan jenis hasilnya harus sesuai dengan harapan yang ditentukan fungsi pemanggilan.
Contoh
Fungsi array_sort mengharapkan fungsi lambda dengan dua parameter.
Jenis parameter akan menjadi jenis elemen array yang akan diurutkan.
Ekspresi diharapkan mengembalikan INTEGER bahwa -1 berarti param1
<param2
, 0 berarti param1
= param2
, dan 1 sebaliknya.
Untuk mengurutkan ARRAY STRING dalam urutan leksikal kanan ke kiri, Anda dapat menggunakan fungsi lambda berikut.
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Fungsi Lambda didefinisikan dan digunakan secara ad hoc. Jadi definisi fungsi adalah argumen:
> SELECT array_sort(array('Hello', 'World'),
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END);
[World, Hello]