groupArray
语法 :
groupArray(x)
或
groupArray(max_size)(x)
创建参数值的数组。
值可以按任何(不确定)顺序添加到数组中。
第二个版本(带有 max_size
参数)将结果数组的大小限制为 max_size
个元素。
例如, groupArray (1) (x)
相当于 [any (x)]
。
在某些情况下,您仍然可以依赖执行顺序。这适用于SELECT(查询)来自使用了 ORDER BY
子查询的情况。
例:
select PersonId,groupArray(ThisDate) AS dates from
(
select PersonId,ThisDate
from TestTable
where PersonId >0
order by PersonId,ThisDate desc
)
group by PersonId
查询结果如下:
lambda(x, expr)
x -> expr
– 对应函数 lambda(x, expr)
高阶函数
运算符, lambda(params, expr) 函数
用于描述一个lambda函数用来传递给其他高阶函数。箭头的左侧有一个形式参数,它可以是一个标识符或多个标识符所组成的元祖。箭头的右侧是一个表达式,在这个表达式中可以使用形式参数列表中的任何一个标识符或表的任何一个列名。
示例: x -> 2 * x, str -> str != Referer.
高阶函数只能接受lambda函数作为其参数。
高阶函数可以接受多个参数的lambda函数作为其参数,在这种情况下,高阶函数需要同时传递几个长度相等的数组,这些数组将被传递给lambda参数。
除了’arrayMap’和’arrayFilter’以外的所有其他函数,都可以省略第一个参数(lambda函数)。在这种情况下,默认返回数组元素本身。
arrayMap(func, arr1, …)
将arr
将从’func’函数的原始应用程序获得的数组返回到’arr’数组中的每个元素。
返回从原始应用程序获得的数组 ‘func’ 函数中的每个元素 ‘arr’ 阵列。
参考链接:https://clickhouse.com/docs/zh/sql-reference/functions/higher-order-functions/