Функции агрегации

Обзор

Функции применяются при построении параметра aggr запроса на агрегирующую выборку из коллекции динамического класса.

Сам факт построения агрегирующего запроса обязывает к использованию хотя бы одной агрегирующей функции.

Порядок построения фильтра

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

Например:
["count",1]

["sum",["property","pint"]]

В качестве параметра может быть указана любая суперпозиция поддерживаемых функций общего назначения.

Например:
["sum",["%",["-",["property","pint"],1],10]]

В общем случае значение параметра aggr может выглядеть так:

.

{
  "x": ["sum",["//",["-",["property","pint"],1],10]],
  "any": ["or",["property","pbool"]]
}

Список поддерживаемых функций

Все функции применяются к значениям в группе с одинаковой базой.

  • count/1 - подсчет количества элементов в группе. Параметр - произвольное значение.

  • count_distinct/1 - подсчет количества различных значений в группе. Значения null не учитываются. Например, количество уникальных отправителей по дням: aggr={"cnt":["count_distinct",["property","from"]]}&groupby={"day":["toYYYYMMDD",["property","dateTime"]]}.

  • sum/1 - суммирование числового значения. Параметр - как правило функция ["property",FIELDNAME]. В ряде случаев может оказаться полезным генерация по условию 0 или 1.

  • min/1 - вычисление минимального значения.

  • max/1 - вычисление максимального значения.

  • avg/1 - вычисление среднего значения. Для построения взвешенной суммы в качестве параметра можно передавать функцию от значения, например умножение на весовой коэффициент, который также вычисляется как функция.

  • and/1 - булевое перемножение значений.

  • or/1 - булевое сложение значений.

  • join/2 - зацепление значений группы в строку через разделитель. Первый аргумент - разделитель (константа или функция), второй - значение (произвольная функция), например ["join",", ",["property","name"]]. Порядок аргументов тот же, что у функции общего назначения join.