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, 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 ekspresi paramNsederhana , 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]