Lambda 函数
适用于: Databricks SQL Databricks Runtime
可传递到函数以控制其行为的参数化表达式。
例如,array_sort 函数接受 lambda 函数作为参数来定义自定义排序顺序。
语法
{ param -> expr |
(param1 [, ...] ) -> expr }
参数
paramN
:父函数用来传递 lambda 函数参数的标识符。expr
:任何引用paramN
的简单表达式,其中不包含子查询或 SQL 用户定义函数。
返回
结果类型由 expr
的结果类型定义。
如果有多个 paramN
,则参数名称必须是唯一的。 参数的类型由调用函数设置。
expression
必须对这些类型有效,并且结果类型必须与调用函数的定义的预期值相匹配。
示例
array_sort 函数需要一个带有两个参数的 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]