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 表示 param1param2<param2param1 = 和 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]