首页/数据/NoSQL 速查/高阶函数与 lambda 表达式
ClickHouse56 条

高阶函数与 lambda 表达式

高阶函数用 lambda 表达式对数组做映射、过滤与规约:arrayMap、arrayFilter、arrayReduce、arrayExists、arrayAll 等,适合在 SQL 内完成轻量数据处理。

NoSQL 速查数据更新于 2026-10-12
写法func(x -> 表达式, 数组[, 参数])
常用arrayMap / arrayFilter / arrayReduce / arrayExists / arrayAll / arrayCount
规约arrayReduce('sum', arr)、arrayReduce('avg', arr)、arrayReduce('uniq', arr)

示例

示例
SELECT arrayMap(x -> x * 10, [1, 2, 3]) AS mapped;
SELECT arrayFilter(x -> x % 2 = 0, [1, 2, 3, 4]) AS evens;
SELECT arrayReduce('sum', [1, 2, 3]) AS total;
SELECT arrayExists(x -> x > 3, [1, 2, 3, 4]) AS has_big;
lambda 里可以引用外层列(闭包),例如 arrayMap(x -> x + base, arr),但嵌套层级过深会影响可读性。

易错点

  • lambda 参数名与列名相同会遮蔽外部列,取不同名字更稳
  • 对每行展开大数组会显著放大内存,先评估数组平均长度

数据来源与参考

  • ClickHouse Docs: Higher-order functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌