Fungsi Lambda

Berlaku untuk:centang ditandai ya pemeriksaan Databricks SQL ditandai ya 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 referensi paramNekspresi sederhana , yang tidak berisi subkueri atau fungsi yang ditentukan pengguna SQL.

Kembali

Jenis hasil ditentukan oleh jenis exprhasil .

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]