Lambda-függvények

A következőre vonatkozik:yes Databricks SQL check marked yes Databricks Runtime

Paraméteres kifejezés, amely átadható egy függvénynek a működés szabályozásához.

Például array_sort függvény egy lambda függvényt fogad el argumentumként az egyéni rendezési sorrend meghatározásához.

Szintaxis

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

Paraméterek

  • paramN: A szülőfüggvény által a lambda függvény argumentumainak átadására használt azonosító .
  • expr: Bármely egyszerű kifejezésre való hivatkozás paramN, amely nem tartalmaz al lekérdezést vagy felhasználó által definiált SQL-függvényt.

Visszatérési érték

Az eredménytípust a következő eredménytípus exprhatározza meg: .

Ha több paramNis van, a paraméterneveknek egyedinek kell lenniük. A paraméterek típusait az invoking függvény állítja be. Az expression értéknek érvényesnek kell lennie ezekre a típusokra, és az eredménytípusnak meg kell felelnie a meghívási függvények meghatározott elvárásainak.

Példák

A array_sort függvény két paraméterrel rendelkező lambda függvényt vár. A paramétertípusok a rendezendő tömb elemeinek típusa lesznek. A kifejezés várhatóan egy egész számot ad vissza, ahol a -1 azt jelenti param1<param2, a 0 azt jelenti param1 = param2, és egyébként az 1 értéket.

Ha a SZTRING tömböt jobbról balra lexikális sorrendben szeretné rendezni, használja az alábbi lambda függvényt.

(p1, p2) -> CASE WHEN p1 = p2 THEN 0
                 WHEN reverse(p1) < reverse(p2) THEN -1
                 ELSE 1 END

A Lambda-függvények definiálása és használata ad hoc. A függvénydefiníció tehát a következő argumentum:

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