Fungsi Lambda
Berlaku untuk: pemeriksaan Databricks SQL Databricks Runtime
Ekspresi berparameter yang dapat diteruskan ke fungsi untuk mengontrol perilakunya.
Misalnya, fungsi array_sort menerima fungsi lambda sebagai argumen untuk menentukan urutan pengurutan kustom.
Sintaks
{ param -> expr |
(param1 [, ...] ) -> expr }
Parameter
paramN
: Pengidentifikasi yang digunakan oleh fungsi induk untuk meneruskan argumen untuk fungsi lambda.expr
: Setiap referensiparamN
ekspresi sederhana , yang tidak berisi subkueri atau fungsi yang ditentukan pengguna SQL.
Kembali
Jenis hasil ditentukan oleh jenis expr
hasil .
Jika ada lebih dari satu paramN
, nama parameter harus unik. Jenis parameter diatur oleh fungsi pemanggilan.
expression
harus valid untuk jenis ini dan jenis hasil harus sesuai dengan harapan yang ditentukan dari 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 BILANGAN BULAT di mana -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 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]