Агрегатные функции

Агрегатные функции в RQL позволяют проводить расчеты над множествами значений, предоставляя доступ к вычислению общих сумм, средних, максимальных и минимальных значений, а также других агрегатов из больших объемов данных. Их ключевая особенность — это возможность эффективно обработать информацию, полученную из различных строк данных.

Обработка NULL в агрегатных функциях предполагает исключение NULL значений из обработки, т.е., все NULL значения пропускаются и не участвуют в агрегации.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список агрегатных функций для ClickHouse 24.7.

Table 1. Агрегатные функции
Функция Описание

count()

Подсчитывает количество строк, удовлетворяющих условиям запроса (count()). Если условие не указано, подсчитывает все строки в наборе данных.

min()

Возвращает минимальное значение в столбце (min(column)). Может применяться к числовым, строковым и некоторым другим типам данных.

max()

Возвращает максимальное значение в столбце (max(column)). Поддерживает такие же типы данных, как и функция min().

sum()

Суммирует значения по столбцу (sum(column)). Применима только к числовым типам данных.

avg()

Вычисляет среднее значение для столбца, содержащего числовые данные (avg(column)).

any()

Возвращает произвольное значение из столбца (any(column)). Может быть использована для оптимизации, когда точное значение не важно.

stddevPop()

Вычисляет стандартное отклонение для всей выборки (stddevPop(column)). Поддерживается только для числовых данных.

stddevSamp()

Вычисляет выборочное стандартное отклонение (stddevSamp(column)). Используется для оценки стандартного отклонения на основе выборки из генеральной совокупности.

varPop()

Вычисляет дисперсию для всей выборки (varPop(column)).

varSamp()

Вычисляет дисперсию выборки (varSamp(column)), что полезно для анализа вариативности данных в выборке.

corr()

Вычисляет коэффициент корреляции Пирсона между двумя столбцами (corr(column1, column2)).

covarPop()

Вычисляет ковариацию для всей совокупности (covarPop(column1, column2)).

covarSamp()

Вычисляет ковариацию на основе выборки из генеральной совокупности (covarSamp(column1, column2)).

entropy()

Вычисляет энтропию для столбца (entropy(column)), что может использоваться для оценки степени разнообразия или неопределенности в данных.

intervalLengthSum()

Суммирует длины интервалов между значениями в столбце (intervalLengthSum(startColumn, endColumn)), что может применяться для вычисления общего времени или расстояния.

median()

Вычисляет медиану значений в столбце (median(column)).

rankCorr()

Вычисляет ранговую корреляцию между двумя переменными (rankCorr(column1, column2)).

sumKahan()

Суммирует числа с использованием алгоритма Кахана для уменьшения ошибки округления (sumKahan(column)).

studentTTest()

Выполняет t-тест Стьюдента для сравнения средних двух выборок. Используется без параметра confidenceLevel (studentTTest(sample1, sample2)).

welchTTest()

Выполняет t-тест Уэлча, модификацию t-теста Стьюдента, предназначенную для использования с выборками разного размера и дисперсии. Используется без параметра confidenceLevel (welchTTest(sample1, sample2)).

anyHeavy()

Возвращает наиболее часто встречающееся значение в столбце (anyHeavy(column)).

anyLast()

Возвращает последнее значение в столбце (anyLast(column)).

boundingRatio()

Вычисляет отношение ограничивающего объема (boundingRatio(column)), что может использоваться для оценки плотности данных.

first_value()

Возвращает первое значение в порядке сортировки (first_value(column)).

last_value()

Возвращает последнее значение в порядке сортировки (last_value(column)).

argMin()

Возвращает значение аргумента, при котором достигается минимальное значение выражения (argMin(arg, val)).

argMax()

Возвращает значение аргумента, при котором достигается максимальное значение выражения (argMax(arg, val)).

avgWeighted()

Вычисляет взвешенное среднее значение (avgWeighted(value, weight)).

deltaSum()

Вычисляет сумму разностей последовательных значений в столбце (deltaSum(column)), полезно для анализа изменений значений во времени.

deltaSumTimestamp()

Вычисляет сумму разностей между последовательными временными метками (deltaSumTimestamp(timestampColumn)), используется для вычисления общего времени между событиями.

groupArray()

Агрегирует значения в массив (groupArray(column)), обеспечивает возможность работы с массивом значений как с единой сущностью.

groupUniqArray()

Агрегирует уникальные значения в массив (groupUniqArray(column)), используется для удаления дубликатов из набора данных.

groupArrayInsertAt()

Вставляет значение в массив по указанному индексу (groupArrayInsertAt(value, index)), позволяет модифицировать массивы при агрегации.

groupArraySorted()

Сортирует элементы массива (groupArraySorted(column)), обеспечивает порядок данных в массиве.

groupArrayIntersect()

Возвращает массив, содержащий только элементы, присутствующие во всех входных массивах (groupArrayIntersect(arrays)), полезно для поиска общих элементов.

groupBitAnd()

Выполняет побитовую операцию И над всеми значениями столбца (groupBitAnd(column)), применяется для агрегации битовых флагов.

groupBitOr()

Выполняет побитовую операцию ИЛИ над всеми значениями столбца (groupBitOr(column)), используется для объединения битовых флагов.

groupBitXor()

Выполняет побитовую операцию исключающее ИЛИ над всеми значениями столбца (groupBitXor(column)), полезно для вычисления различий между битовыми флагами.

groupBitmap()

Агрегирует значения в битовую карту (groupBitmap(column)), эффективно для подсчета уникальных значений.

groupBitmapAnd()

Выполняет операцию И над битовыми картами (groupBitmapAnd(bitmap1, bitmap2)), используется для поиска общих уникальных значений между наборами.

groupBitmapOr()

Выполняет операцию ИЛИ над битовыми картами (groupBitmapOr(bitmap1, bitmap2)), применяется для объединения уникальных значений из нескольких наборов.

groupBitmapXor()

Выполняет операцию исключающее ИЛИ над битовыми картами (groupBitmapXor(bitmap1, bitmap2)), полезно для определения уникальных значений, отличающихся между наборами.

sumWithOverflow()

Суммирует значения, позволяя переполнение (sumWithOverflow(column)), применяется для обработки очень больших сумм, где может произойти переполнение.

sumMap()

Суммирует элементы входных массивов, группируя по ключам (sumMap(keysArray, valuesArray)), полезно для агрегации данных по ключу.

minMap()

Находит минимальные элементы входных массивов, группируя по ключам (minMap(keysArray, valuesArray)), используется для определения минимального значения по ключу.

maxMap()

Находит максимальные элементы входных массивов, группируя по ключам (maxMap(keysArray, valuesArray)), применяется для определения максимального значения по ключу.

skewSamp()

Вычисляет выборочный коэффициент асимметрии для набора данных (skewSamp(column)), используется для оценки асимметрии распределения.

skewPop()

Вычисляет коэффициент асимметрии для всей совокупности (skewPop(column)), полезно для анализа формы распределения на всей выборке.

kurtSamp()

Вычисляет выборочный коэффициент эксцесса (kurtSamp(column)), используется для анализа "остроты" пика распределения данных.

kurtPop()

Вычисляет коэффициент эксцесса для всей выборки (kurtPop(column)), позволяет оценить, насколько плоское или острое распределение у всей совокупности.

uniq()

Подсчитывает количество уникальных значений в столбце (uniq(column)), используется для определения количества различных элементов.

uniqExact()

Точно подсчитывает количество уникальных значений (uniqExact(column)), предпочтительно для небольших наборов данных, где требуется точность.

uniqCombined()

Приблизительно подсчитывает количество уникальных значений с помощью алгоритма HyperLogLog (uniqCombined(column)), эффективно для больших объемов данных.

uniqCombined64()

Приблизительно подсчитывает количество уникальных значений с помощью 64-битной версии алгоритма HyperLogLog (uniqCombined64(column)), предназначено для очень больших наборов данных.

uniqHLL12()

Приблизительно подсчитывает количество уникальных значений с использованием алгоритма HyperLogLog с точностью 12 бит (uniqHLL12(column)), используется для оптимизации расчета уникальности в больших наборах данных.

uniqTheta()

Приблизительно подсчитывает количество уникальных значений с использованием алгоритма Theta Sketch (uniqTheta(column)), предлагает улучшенную производительность и точность на больших объемах данных.

simpleLinearRegression()

Вычисляет параметры простой линейной регрессии для двух переменных (simpleLinearRegression(y, x)), позволяя оценить линейную зависимость между ними.

stochasticLinearRegression()

Вычисляет параметры стохастической линейной регрессии (stochasticLinearRegression(y, x)), используется для моделирования линейной зависимости с учетом случайного компонента.

stochasticLogisticRegression()

Вычисляет параметры стохастической логистической регрессии (stochasticLogisticRegression(y, x)), применяется для моделирования вероятности события на основе одной или нескольких независимых переменных.

categoricalInformationValue()

Вычисляет информационную ценность для категориальных переменных (categoricalInformationValue(variable, outcome)), позволяет оценить значимость переменных в предсказании исхода.

contingency()

Вычисляет таблицу сопряженности для двух категориальных переменных (contingency(variable1, variable2)), используется для анализа взаимосвязи между переменными.

cramersV()

Вычисляет коэффициент Крамера для измерения ассоциации между двумя категориальными переменными (cramersV(variable1, variable2)), позволяет оценить силу связи между переменными.

cramersVBiasCorrected()

Вычисляет скорректированный на смещение коэффициент Крамера (cramersVBiasCorrected(variable1, variable2)), обеспечивает более точную оценку ассоциации при малых выборках.

theilsU()

Вычисляет индекс Тейла для измерения ассоциации между двумя категориальными переменными (theilsU(variable1, variable2)), предоставляет альтернативную метрику для оценки взаимосвязей.

maxIntersections()

Находит максимальное количество пересечений между наборами значений (maxIntersections(set1, set2)), используется для определения наибольшего перекрытия между группами.

maxIntersectionsPosition()

Находит позицию максимального количества пересечений (maxIntersectionsPosition(set1, set2)), позволяет определить, где происходит наибольшее перекрытие между наборами данных.

meanZTest()

Выполняет Z-тест для среднего значения (meanZTest(sampleMean, populationMean, stdDev, sampleSize)), применяется для проверки гипотезы о равенстве средних в генеральной совокупности и выборке.

sparkBar()

Генерирует текстовое представление гистограммы для распределения значений (sparkBar(column)), предоставляет визуализацию распределения в текстовом формате.

sumCount()

Вычисляет сумму и количество значений одновременно (sumCount(column)), полезно для получения общей суммы и размера выборки в одном запросе.

largestTriangleThreeBuckets()

Применяет алгоритм Largest Triangle Three Buckets для уменьшения числа точек во временных рядах (largestTriangleThreeBuckets(time, value, buckets)), используется для оптимизации отображения графиков больших временных рядов.