首页/数据/NoSQL 速查/数组函数与 groupArray
ClickHouse56 条

数组函数与 groupArray

数组类型配合函数族可以完成分组内列表聚合、元素展开与检索:groupArray 收集、arrayJoin 展开、arrayDistinct 去重、has/indexOf 判断元素。

NoSQL 速查数据更新于 2026-10-12
聚合侧groupArray、groupUniqArray、groupArrayInsertAt、topK
数组侧arrayJoin(展开为多行)、arraySort、arrayDistinct、arraySlice、has、indexOf、length
组合SELECT … arrayJoin(groupArray(x)) 可在分组与展开之间转换

示例

示例
SELECT user_id, groupArray(event_type) AS events, length(events) AS cnt
FROM events
GROUP BY user_id
ORDER BY cnt DESC
LIMIT 5;

SELECT arrayJoin([1, 2, 3]) AS x;

SELECT arrayDistinct(arrayConcat([1, 2], [2, 3]));
arrayJoin 会把一行展开成多行,展开后再聚合等于全局重算,注意与原始行数统计口径区分。

易错点

  • 对超大分组使用 groupArray 会占用大量内存,受 max_memory_usage 限制报错时先缩小分组
  • arrayJoin 与 GROUP BY 同用时的语义容易混淆,先在小数据上验证行数

数据来源与参考

  • ClickHouse Docs: Array functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌