Bagikan melalui


Fungsi lambda

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Ekspresi parameter yang dapat diteruskan ke fungsi untuk mengontrol perilakunya.

Misalnya, array_sort fungsi menerima fungsi lambda sebagai argumen untuk menentukan urutan pengurutan kustom.

Sintaks

{ param -> expr |
  (param1 [, ...] ) -> expr }

Parameter

  • paramN: Pengidentifikasi digunakan oleh fungsi induk untuk meneruskan argumen untuk fungsi lambda.
  • expr: Setiap ekspresi sederhana yang merujuk ke paramN, yang tidak berisi subkueri atau fungsi SQL yang ditentukan pengguna.

Pengembalian

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 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 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]