DataStore 聚合函数
DataStore 提供了完整的聚合函数和窗口函数支持,充分利用 ClickHouse 强大的 SQL 聚合能力。
基本聚合
内置方法
| Method | 对应的 SQL 函数 | 说明 |
|---|---|---|
sum() | SUM() | 值的求和 |
mean() | AVG() | 平均值/均值 |
count() | COUNT() | 统计非空值数量 |
min() | MIN() | 最小值 |
max() | MAX() | 最大值 |
median() | MEDIAN() | 中位数 |
std() | stddevPop() | 标准差 |
var() | varPop() | 方差 |
nunique() | COUNT(DISTINCT) | 统计唯一值的数量 |
示例:
GroupBy 分组聚合
单个聚合
多个聚合
具名聚合
多个 GroupBy 键
统计聚合
| Method | SQL Equivalent | Description |
|---|---|---|
quantile(q) | quantile(q) | 第 q 分位数(0-1) |
skew() | skewPop() | 偏度 |
kurt() | kurtPop() | 峰度 |
corr() | corr() | 相关系数 |
cov() | covar() | 协方差 |
sem() | - | 均值的标准误 |
示例:
条件聚合
ClickHouse 特有的条件聚合函数。
| Function | ClickHouse | Description |
|---|---|---|
sum_if(cond) | sumIf() | 在满足条件时求和 |
count_if(cond) | countIf() | 在满足条件时计数 |
avg_if(cond) | avgIf() | 在满足条件时求平均值 |
min_if(cond) | minIf() | 在满足条件时取最小值 |
max_if(cond) | maxIf() | 在满足条件时取最大值 |
示例:
集合聚合函数
ClickHouse 特有的用于收集值的函数。
| Function | ClickHouse | Description |
|---|---|---|
group_array() | groupArray() | 收集为数组 |
group_uniq_array() | groupUniqArray() | 收集为去重数组 |
group_concat(sep) | groupConcat() | 拼接字符串 |
top_k(n) | topK(n) | 前 K 个最频繁的值 |
any() | any() | 任意一个值 |
any_last() | anyLast() | 最后一个值 |
first_value() | first_value() | 按顺序的首个值 |
last_value() | last_value() | 按顺序的最后一个值 |
示例:
窗口函数
排名函数
| Function | SQL | Description |
|---|---|---|
row_number() | ROW_NUMBER() | 顺序行号 |
rank() | RANK() | 带间隙的排名 |
dense_rank() | DENSE_RANK() | 无间隙的排名 |
ntile(n) | NTILE(n) | 划分为 n 个桶 |
percent_rank() | PERCENT_RANK() | 百分位排名(0-1) |
cume_dist() | CUME_DIST() | 累积分布 |
示例:
值函数
| Function | SQL | Description |
|---|---|---|
lag(n) | LAG(col, n) | 上一行的值 |
lead(n) | LEAD(col, n) | 下一行的值 |
first_value() | FIRST_VALUE() | 窗口内的第一个值 |
last_value() | LAST_VALUE() | 窗口内的最后一个值 |
nth_value(n) | NTH_VALUE(col, n) | 窗口内的第 N 个值 |
示例:
累积函数
| Method | Description |
|---|---|
cumsum() | 累积和 |
cummax() | 累积最大值 |
cummin() | 累积最小值 |
cumprod() | 累积乘积 |
diff(n) | 与前 n 行的差值 |
pct_change(n) | 与前 n 行相比的百分比变化 |
示例:
滚动窗口
F 命名空间
F 命名空间用于访问 ClickHouse 函数。
导入
使用 F 命名空间函数
F 与窗口函数配合使用
常见聚合模式
每组的前 N 个
累积和
移动平均
年度同比对比
百分位数排名
聚合方法汇总
| 类别 | 方法 |
|---|---|
| 基础 | sum, mean, count, min, max, median |
| 统计 | std, var, quantile, skew, kurt, corr, cov |
| 条件 | sum_if, count_if, avg_if, min_if, max_if |
| 集合 | group_array, group_uniq_array, group_concat, top_k |
| 排名 | row_number, rank, dense_rank, ntile, percent_rank |
| 取值 | lag, lead, first_value, last_value, nth_value |
| 累积 | cumsum, cummax, cummin, cumprod, diff, pct_change |
| 滚动/扩展 | rolling().mean/sum/std/..., expanding().mean/sum/... |