帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 查询与分析
  6. 通过索引模式查询和分析日志
  7. SQL分析语法与功能
  8. SQL函数
  9. Lambda表达式

Lambda表达式

  • SQL函数
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

日志服务支持您在SQL分析语句和SPL语句中定义Lambda表达式,并将该表达式传递给指定函数,丰富函数的表达。本文介绍Lambda表达式的基本语法及示例。

语法

Lambda表达式需与函数一起使用,例如filter函数、reduce函数、transform函数、zip_with函数、map_filter函数。Lambda表达式的语法如下:

parameter -> expression

参数

说明

parameter

用于传递参数的标识符。

expression

表达式,大多数的MySQL表达式都可以在Lambda表达式使用。例如:

x -> x + 1
(x, y) -> x + y
x -> regexp_like(x, 'a+')
x -> x[1] / x[2]
x -> if(x > 0, x, -x)
x -> coalesce(x, 0)
x -> cast(x AS JSON)
x -> x + try(1 / 0)

示例

示例1:使用Lambda表达式x -> x is not null

返回数组[5, null, 7, null]中非null的元素。

  • 查询和分析语句

    * | SELECT filter(array[5, null, 7, null], x -> x is not null)
  • 查询和分析结果filter函数

示例2:使用Lambda表达式0, (s, x) -> s + x, s -> s

返回数组[5, 20, 50]中各个元素相加的结果。

  • 查询和分析语句

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • 查询和分析结果reduce

示例3:使用Lambda表达式(k,v) -> v > 10

将两个数组映射为一个Map且Map中的键值大于10。

  • 查询和分析语句

    * | SELECT map_filter(map(array['class01', 'class02', 'class03'], array[11, 10, 9]), (k,v) -> v > 10)
  • 查询和分析结果map_filter

示例4:使用Lambda表达式(x, y) -> (y, x)

将对换两个数组的元素位置,然后提取数组中索引相同的元素组成一个新的二维数组。

  • 查询和分析语句

    * | SELECT zip_with(array[1, 3, 5], array['a', 'b', 'c'], (x, y) -> (y, x))
  • 查询和分析结果zip_with

示例5:使用Lambda表达式x -> coalesce(x, 0) + 1

将数组[5, NULL, 6]中的各个元素加1,然后返回。如果数组中包含null元素,则转换为0,再加1。

  • 查询和分析语句

    * | SELECT transform(array[5, NULL, 6], x -> coalesce(x, 0) + 1)
  • 查询和分析结果transform

其他示例

* | SELECT filter(array[], x -> true)
* | SELECT map_filter(map(array[],array[]), (k, v) -> true)
* | SELECT reduce(array[5, 6, 10, 20], -- calculates arithmetic average: 10.25
              cast(row(0.0, 0) AS row(sum double, count integer)),
              (s, x) -> cast(row(x + s.sum, s.count + 1) AS row(sum double, count integer)),
              s -> if(s.count = 0, null, s.sum / s.count))
* | SELECT reduce(array[2147483647, 1], cast(0 AS bigint), (s, x) -> s + x, s -> s)
* | SELECT reduce(array[5, 20, null, 50], 0, (s, x) -> s + x, s -> s)
* | SELECT transform(array[array[1, null, 2], array[3, null]], a -> filter(a, x -> x is not null))
* | SELECT zip_with(array['a', 'b', 'c'], array['d', 'e', 'f'], (x, y) -> concat(x, y))
相关文章

聚合函数 2025-04-22 10:58

聚合函数用于对目标数值执行计算并返回结果。本文介绍聚合函数的基本语法及示例。

字符串函数 2025-04-22 10:58

本文介绍字符串函数的基本语法和示例。 日志服务支持如下字符串函数。

日期和时间函数 2025-04-22 10:58

日志服务提供时间函数、日期函数、日期和时间提取函数、时间间隔函数和时序补全函数,支持对日志中的日期和时间进行格式转换,分组聚合等处理。本文介绍日期和时间函数的基本语法及示例。 日期和时间函数概览 日志服务支持如下日期和时间函数。

JSON函数 2025-04-22 10:58

本文介绍JSON函数的基本语法及示例。 日志服务支持如下JSON函数。

正则式函数 2025-04-22 10:58

本文介绍正则式函数的基本语法及示例。 正则式函数概览 日志服务支持如下正则式函数(正则表达式采用RE2语法)。

同比和环比函数 2025-04-22 10:58

本文介绍同比和环比函数的基础语法和示例。 日志服务支持如下同比和环比函数。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1