适用于: 勾选“是” 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 函数
  •