适用于:
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]
array_sort 函数
exists 函数
filter 函数
forall 函数
map_filter 函数
map_zip_with 函数
transform 函数
transform_keys 函数
transform_values 函数
zip_with 函数