Преобразование joinaggregate

Преобразование joinaggregate добавляет к исходным объектам данных агрегированные значения. Сначала рассчитываются агрегаты, затем результаты присоединяются к входным данным. Параметры почти совпадают с aggregate, но новые выходные объекты не создаются: значения записываются в каждый исходный объект. Такой же результат можно получить через window с frame: [null, null]. Это полезно для расчётов, объединяющих исходные и сводные значения, например доли каждой записи в сумме группы.

Параметры преобразования

Свойство Тип Описание
groupby Field[ ] Поля для группировки. Если не заданы, все объекты данных образуют одну группу.
fields Field[ ] Поля данных для расчёта агрегатов. Их порядок должен соответствовать массивам ops и as. Если fields и ops не заданы, по умолчанию используется подсчёт count.
ops String[ ] Агрегирующие операции для полей fields, например sum, average или count. См. справочник операций.
as String[ ] Выходные имена агрегированных полей. Если не заданы, имена создаются по операции и полю, например sum_field или average_field.

Агрегирующие операции

Все допустимые агрегирующие операции.

Операция Описание
count Общее число объектов данных в группе.
valid Число значений поля, отличных от null, undefined и NaN.
missing Число значений поля, равных null или undefined.
distinct Число различных значений поля.
sum Сумма значений поля.
mean Среднее значение поля.
average Среднее значение поля; синоним mean.
variance Выборочная дисперсия значений поля.
variancep Дисперсия генеральной совокупности.
stdev Выборочное стандартное отклонение.
stdevp Стандартное отклонение генеральной совокупности.
stderr Стандартная ошибка значений поля.
median Медиана значений поля.
q1 Нижняя граница межквартильного диапазона.
q3 Верхняя граница межквартильного диапазона.
ci0 Нижняя граница 95-процентного доверительного интервала среднего, рассчитанного бутстрепом.
ci1 Верхняя граница 95-процентного доверительного интервала среднего, рассчитанного бутстрепом.
min Минимальное значение поля.
max Максимальное значение поля.
argmin Исходный объект данных с минимальным значением поля.
argmax Исходный объект данных с максимальным значением поля.

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

Для следующих входных данных:

[
  {"foo": 1, "bar": 1},
  {"foo": 1, "bar": 2},
  {"foo": null, "bar": 3}
]

преобразование joinaggregate:

{
  "type": "joinaggregate",
  "fields": ["foo", "bar", "bar"],
  "ops": ["valid", "sum", "median"],
  "as": ["v", "s", "m"]
}

создаёт результат:

[
  {"foo": 1, "bar": 1, "v": 2, "s": 6, "m": 2},
  {"foo": 1, "bar": 2, "v": 2, "s": 6, "m": 2},
  {"foo": null, "bar": 3, "v": 2, "s": 6, "m": 2}
]