適用於:
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]