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 表示 、0 表示 param1
param2
<param2
param1
= 和 1,否則為 。
若要以從右至左語彙順序排序 STRING 的 ARRAY,您可以使用下列 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]