Присоединённое агрегирование
Преобразование joinaggregate вычисляет итоговые значения и добавляет их к каждой исходной записи в новых полях. Это позволяет сочетать исходные значения с групповыми итогами, например рассчитывать долю записи в общей сумме. В отличие от обычного агрегирования, исходная структура таблицы сохраняется: записи дополняются итогами, а не сводятся к одной записи на группу. Это частный случай оконного преобразования, в котором frame всегда равен [null, null].
Содержание страницы
Определение полей присоединённого агрегирования
// Любая спецификация представления
{
...,
"transform": [
{
// Присоединённое агрегирование
"joinaggregate": [{
"op": ...,
"field": ...,
"as": ...
}],
"groupby": [
"..."
]
},
...
],
...
}
Определение преобразования
| Свойство | Тип | Описание |
|---|---|---|
joinaggregate |
JoinAggregateFieldDef[] | Обязательные определения полей присоединённого агрегирования и вычислений для них. |
groupby |
FieldName[] | Поля для разбиения объектов данных на отдельные группы. Если не указаны, все записи образуют одну группу. |
Определение итогового поля
| Свойство | Тип | Описание |
|---|---|---|
op |
AggregateOp | Обязательная операция агрегирования, например "sum", "average" или "count". См. все поддерживаемые операции. |
field |
FieldName | Поле для вычисления функции агрегирования. Можно не указывать для функций, которые не используют поле, например "count". |
as |
FieldName | Обязательное имя выходного поля присоединённого агрегирования. |
Примеры
Ниже показаны распространённые способы применения присоединённого агрегирования.
Доля от общей суммы
Сначала вычисляется общая сумма, затем для каждой записи рассчитывается её доля:
Отклонение от среднего
Можно отобрать фильмы, чей рейтинг выше общего среднего более чем на 2,5 балла:
В следующем примере фильм сравнивается со средним рейтингом за свой год выпуска, а не со средним по всему набору: отбираются фильмы с рейтингом более чем на 2,5 балла выше среднего за этот год.
Можно также не отбирать фильмы, а вычислить для каждой записи разность между её рейтингом и средним:
Контрастный цвет текста
Здесь текст накладывается на табличную тепловую карту. Подписи чёрные или белые в зависимости от num_cars. Если порог прописан вручную, например 40, нужно заранее знать диапазон значений:
joinaggregate вместе с calculate позволяет определить порог по данным автоматически: