共用方式為


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]