Skip to content

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

Считают одно значение по набору строк: сумму, среднее, количество. Такая функция кладётся на полку Мера и агрегирует все строки, попавшие в разрез виджета.

Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.

Не все функции доезжают до источника

В режиме прямого запроса формула переводится в SQL вашей базы, и часть функций в её диалекте отсутствует. У таких ниже стоит строка «В прямом запросе…» с перечнем баз, на которых расчёт не соберётся. Oracle, Firebird и Trino в этот перечень не входят: на них в прямом запросе не строится большинство виджетов — поддержка функций источниками.

Помечены как неисполняемые, но работают ​

У пяти функций — COUNTD_APPROX, STDEV, STDEVP, VAR, VARP — в справочнике продукта стоит пометка «источник пока не исполняет», и автодополнение их не предлагает. На витрине платформы они тем не менее считаются и возвращают значение: пометка расходится с поведением платформы.

ALL_CONCAT ​

ALL_CONCAT( string [, sep ] )

Склеивает все значения в строку через разделитель.

Источник пока не исполняет эту функцию

Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».

ANY ​

ANY( value )

Одно из значений набора — возвращается наименьшее.

Пример.

ANY([orders.status])

«В обработке» — первый по алфавиту статус в категории. Берите, когда значение внутри группы одинаково и агрегат нужен только формально.

ARG_MAX ​

ARG_MAX( value, number )

Значение, соответствующее максимуму второго аргумента.

Пример.

ARG_MAX([products.product_name], [orders.amount])

Товар с самым крупным заказом категории: «Док-станция USB-C» у «Аксессуаров». Так находят лидера, не собирая отдельную сортировку.

Доступно на ClickHouse и файловых источниках.

В прямом запросе работает только на: ClickHouse.

ARG_MIN ​

ARG_MIN( value, number )

Значение, соответствующее минимуму второго аргумента.

Пример.

ARG_MIN([products.product_name], [orders.amount])

Товар с самым мелким заказом: «Кабель HDMI 2 м».

Доступно на ClickHouse и файловых источниках.

В прямом запросе работает только на: ClickHouse.

AVG ​

AVG( number )

Среднее арифметическое всех значений.

Пример.

AVG([orders.amount])

Результат — средний чек: Компьютеры — 330 960, Аксессуары — 16 014.

AVG_IF ​

AVG_IF( number, condition )

Среднее значений, удовлетворяющих условию.

Пример.

AVG_IF([orders.amount], [orders.status] = 'Доставлен')

Средний чек только доставленных заказов — 16 950 против 16 014 по всем: отменённые заказы занижают среднее.

COUNT ​

COUNT( [ value ] )

Количество значений (строк).

Пример.

COUNT([orders.order_id])

Результат — 250 заказов у «Аксессуаров», «Компьютеров» и «Мобильных устройств», 450 у «Периферии».

COUNTD ​

COUNTD( value )

Количество уникальных значений.

Пример.

COUNTD([orders.customer_id])

Результат — 25 уникальных покупателей в каждой категории, кроме «Периферии»: у неё 45.

COUNTD_APPROX ​

COUNTD_APPROX( value )

Приближённое количество уникальных значений (быстрее).

Пример.

COUNTD_APPROX([orders.customer_id])

25 покупателей — на демо-витрине результат совпал с точным COUNTD. Расхождение появляется на больших объёмах, ради чего функция и нужна.

Помечена в интерфейсе как неисполняемая, но работает — почему.

COUNTD_IF ​

COUNTD_IF( value, condition )

Количество уникальных значений по условию.

Пример.

COUNTD_IF([orders.customer_id], [orders.amount] > 20000)

Семь покупателей категории сделали хотя бы один заказ дороже 20 000.

COUNT_IF ​

COUNT_IF( condition )

Количество значений, для которых условие истинно.

Пример.

COUNT_IF([orders.status] = 'Отменён')

Результат — 50 отменённых заказов в каждой категории, кроме «Периферии»: у неё 150.

MAX ​

MAX( value )

Максимальное значение.

Пример.

MAX([orders.amount])

Самый крупный заказ категории: 49 000 у «Аксессуаров».

MAX_IF ​

MAX_IF( value, condition )

Максимум среди значений по условию.

Пример.

MAX_IF([orders.amount], [orders.status] = 'Доставлен')

Самый крупный доставленный заказ — 44 500. Общий максимум выше (49 000): он приходится на отменённый.

MEDIAN ​

MEDIAN( number )

Медиана значений.

Источник пока не исполняет эту функцию

Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».

MIN ​

MIN( value )

Минимальное значение.

Пример.

MIN([orders.amount])

Самый мелкий заказ категории: 890 у «Аксессуаров».

MIN_IF ​

MIN_IF( value, condition )

Минимум среди значений по условию.

Пример.

MIN_IF([orders.amount], [orders.status] = 'Доставлен')

Самый мелкий доставленный заказ категории — 2 400.

QUANTILE ​

QUANTILE( number, quant )

Точный квантиль уровня quant (0..1).

Источник пока не исполняет эту функцию

Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».

QUANTILE_APPROX ​

QUANTILE_APPROX( number, quant )

Приближённый квантиль уровня quant.

Источник пока не исполняет эту функцию

Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».

STDEV ​

STDEV( number )

Стандартное отклонение по выборке.

Пример.

STDEV([orders.amount])

13 888,34 у «Аксессуаров» при среднем чеке 16 014 — разброс сопоставим со средним, то есть категория собрана из очень разных по сумме заказов.

Помечена в интерфейсе как неисполняемая, но работает — почему.

В прямом запросе не работает на: Vertica, MS SQL Server.

STDEVP ​

STDEVP( number )

Стандартное отклонение по генеральной совокупности.

Пример.

STDEVP([orders.amount])

13 860,53 — чуть меньше, чем STDEV: делитель на единицу больше.

Помечена в интерфейсе как неисполняемая, но работает — почему.

В прямом запросе не работает на: Vertica, MS SQL Server.

SUM ​

SUM( number )

Сумма всех значений выражения.

Пример.

SUM([orders.amount])

Результат — выручка по категории: Компьютеры — 82 740 000, Аксессуары — 4 003 500.

SUM_IF ​

SUM_IF( number, condition )

Сумма значений, для которых условие истинно.

Пример.

SUM_IF([orders.amount], [orders.status] = 'Доставлен')

Результат — выручка только по доставленным: Компьютеры — 6 345 000.

TOP_CONCAT ​

TOP_CONCAT( string, n [, sep ] )

Склеивает первые n значений в строку.

Источник пока не исполняет эту функцию

Формула сохранится, а выборка ответит отказом «Функция … пока не поддержана».

VAR ​

VAR( number )

Дисперсия по выборке.

Пример.

VAR([orders.amount])

192 885 967,87 — квадрат STDEV.

Помечена в интерфейсе как неисполняемая, но работает — почему.

В прямом запросе не работает на: Vertica, MS SQL Server.

VARP ​

VARP( number )

Дисперсия по генеральной совокупности.

Пример.

VARP([orders.amount])

192 114 424 — квадрат STDEVP.

Помечена в интерфейсе как неисполняемая, но работает — почему.

В прямом запросе не работает на: Vertica, MS SQL Server.

Что дальше ​