Агрегатные функции DataStore
DataStore предоставляет широкие возможности агрегатных и оконных функций, используя мощные средства агрегирования SQL в ClickHouse.
Базовые агрегации
Встроенные методы
| Method | SQL-эквивалент | Описание |
|---|---|---|
sum() | SUM() | Сумма значений |
mean() | AVG() | Среднее значение |
count() | COUNT() | Количество ненулевых значений |
min() | MIN() | Минимальное значение |
max() | MAX() | Максимальное значение |
median() | MEDIAN() | Медиана |
std() | stddevPop() | Стандартное отклонение |
var() | varPop() | Дисперсия |
nunique() | COUNT(DISTINCT) | Число уникальных значений |
Примеры:
Агрегации GroupBy
Одиночная агрегация
Множественные агрегации
Именованные агрегаты
Несколько ключей группировки (GroupBy)
Статистические агрегации
| Метод | Эквивалент в SQL | Описание |
|---|---|---|
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() | Последнее значение по порядку |
Примеры:
Оконные функции
Функции ранжирования
| Функция | SQL | Описание |
|---|---|---|
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() | Накопленное распределение |
Примеры:
Функции значений
| Функция | SQL | Описание |
|---|---|---|
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 с оконными функциями
Типовые шаблоны агрегации
Top 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/... |