Lambda 函式
適用於:Databricks SQL Databricks Runtime
可傳遞至函式以控制其行為的參數化表達式。
例如, array_sort函 式接受 Lambda 函式做為自變數,以定義自定義排序順序。
語法
{ param -> expr |
(param1 [, ...] ) -> expr }
參數
-
paramN
:父函式用來傳遞 Lambda 函式自變數的 標識碼。 -
expr
:任何參考paramN
的簡單運算式,不包含子查詢或 SQL 使用者定義函數。
傳回
結果類型是由的結果型別 expr
所定義。
如果有多個 ,參數名稱必須是唯一 paramN
的。 叫用函式會設定參數的類型。
expression
這些型別必須有效,且結果型別必須符合叫用函式所定義的預期。
範例
array_sort 函式 預期需要一個具有兩個參數的 lambda 函式。
參數類型將是要排序之陣列元素的類型。
表達式預期會傳回 INTEGER,其中 -1 表示 param1
<param2
、0 表示 param1
= param2
,否則傳回 1。
若要以從右至左的語彙順序排序 STRING 陣列,您可以使用下列 Lambda 函式。
(p1, p2) -> CASE WHEN p1 = p2 THEN 0
WHEN reverse(p1) < reverse(p2) THEN -1
ELSE 1 END
Lambda 函式是定義及使用臨機操作。 因此,函式定義是 自變數:
> 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]