Databricks SQL lambda 函数

可传递到函数以控制其行为的参数化表达式。

例如,array_sort Databricks (接受lambda SQL) 作为参数来定义自定义排序顺序。

语法

{ param -> expr |
  (param1 [, ...] ) -> expr }

参数

  • paramNparamN 用于传递 lambda 函数的参数的标识符。
  • expr:引用 paramN 的任何简单表达式,该表达式不包含子查询。

返回

结果类型由 expr 的结果类型定义。

如果有多个 paramN,则参数名称必须是唯一的。 参数的类型由调用函数设置。 expression 必须对这些类型有效,并且结果类型必须与调用函数的定义的预期值相匹配。

示例

Databricks array_sort 函数 (函数SQL) 需要具有两个参数的 lambda 函数。 参数类型将是要排序的数组元素的类型。 该表达式应返回整数,其中 -1 表示 param1<param2,0 表示 param1 = param2,否则为 1。

若要按从右到左的词法顺序对字符串数组进行排序,可以使用以下 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]