Список агрегаторов


Главная » Ресурсы » Здесь

Агрегаторы похожи на функции, однако они пользуются более широкими возможностями синтаксиса с дополнительными параметрами. Ниже приводится список агрегаторов, поддерживаемых Envision.


Использование агрегаторов

Агрегаторы используются по-разному в зависимости от того, объединяются ли таблицы.

Простое объединение

Если таблицы не объединяются, то основное предназначение агрегатора agg заключается в следующем:
u = agg(v) by [w1, w2, w3] sort [w4, w5] if c or x over [a .. b]
Где:
  • agg — имя агрегатора.
  • by — дополнительный параметр, задающий группы, которые будут использованы при объединении данных. Можно объединять данные по одному или нескольким значениям.
  • sort — дополнительный параметр сортировки, который будет использоваться при объединении данных. Можно сортировать данные по одному или нескольким значениям.
  • if — фильтр агрегатора. При его наличии все строки со значением false исключаются из объединения.
  • or — дополнительный параметр, задающий значение, которое возвращается, если группа пуста.
  • over — дополнительный параметр, который используется для определения срока агрегации, границы которого выражаются в днях относительно целевой даты.

Если параметр by не указан, группировка производится в соответствии с контекстом, причем в случае назначения обычно используется левая сторона оператора. После by можно задать несколько переменных; если используется только одна переменная, скобки не требуются.

Оператор sort обычно не влияет на большинство агрегаторов, таких как max, потому что они не зависят от порядка сортировки. Тем не менее мы рекомендуем использовать данный оператор вместе с агрегаторами first и last.

Если параметр if не указан, включаются все строки со значением if true.

Если параметр or не указан, возвращаются значения по умолчанию, если группы пустые: 0 (ноль) для числовых значений, false — для логических, пустые строки — для текстовых, нулевые распределения — для распределений.

Объединение данных при объединении таблиц

Синтаксис для данного типа ситуаций во многом похож на описанный ранее, однако есть некоторые отличия:

u = agg(v) by [w1, w2, w3] sort [w4, w5] if c at [z1, z2, z3] or x

Оператор at определяет группы, которые используются при объединении таблиц. Обратите внимание, что эти группы должны точно соответствовать тем, которые используются с оператором by. Как следствие, оператор by становится обязательным, а число элементов, указанных в разделах by и at, должно быть одинаковым.

Базовые агрегаторы

Чаще всего используются следующие агрегаторы:

  • avg: исключительно числовой аргумент; возвращает среднее значение строки.
  • count: высчитывает количество строк, которые имеют значение true (логические значения), либо не равны нулю (числа) или не пустые (текст).
  • distinct: высчитывает число различных значений.
  • first: возвращает значение, привязанное к первой строке в соответствии с определением оператора sort.
  • last: возвращает значение, привязанное к последней строке в соответствии с определением оператора sort.
  • max: возвращает наивысшее значение.
  • median: работает как функция МЕДИАНА в Excel.
  • min: возвращает минимальное значение.
  • product: исключительно числовой аргумент; возвращает произведение значений в строке.
  • ratio: возвращает долю (от 0 до 1) истинных логических значений или чисел, не равных нулю. Для пустой группы данный параметр равен 1.
  • same: предполагается, что все сгруппированные значения равны (в противном случае выдается ошибка) и возвращает это значение.
  • sum: исключительно числовой аргумент, возвращает сумму значений в строке.

Логические агрегаторы

Агрегаторы, перечисленные ниже, возвращают логические значения:

  • all: возвращает значение true, если все входящие строки имеют значения true, в противном случае возвращает значение false.
  • any: возвращает значение false, если все входящие строки имеют значение false, в противном случае возвращает значение true.
  • exists: возвращает значение true, если существует хотя бы одна строка, подходящая под требования агрегатора.

Временные агрегаторы

Следующие агрегаторы применимы только к таблицам, которые имеют столбец Date:

  • latest (обработка нескольких таблиц, особый случай): возвращает самое позднее из найденных значений. Агрегатор latest не совместим с доступными опциями.

Статистические агрегаторы

Для статистических расчетов используются агрегаторы, перечисленные ниже:


Cлучайные переменные

Распределение можно создавать посредством объединения (см. статью об алгебре распределения):

  • ranvar — возвращает эмпирическую случайную переменную, привязанную к числовым показателям.
  • sumr — возвращает сумму сверток сложения случайных переменных. Агрегатор sum() связан с оператором +, а агрегатор sumr() — с оператором +*.