Преобразование aggregate
Преобразование aggregate группирует входные данные и рассчитывает сводные показатели, создавая новый выходной поток. Оно позволяет подсчитывать объекты, суммы, средние и другие статистики внутри групп.
Параметры преобразования
| Свойство | Тип | Описание |
|---|---|---|
| groupby | Field[ ] | Поля для группировки. Если не заданы, все объекты данных образуют одну группу. |
| fields | Field[ ] | Поля для расчёта агрегатов. Порядок должен соответствовать массивам ops и as. Если fields и ops не заданы, по умолчанию выполняется подсчёт count. |
| ops | String[ ] | Агрегирующие операции для полей fields, например sum, average или count. Если массив не задан, используется count. См. справочник операций. |
| as | String[ ] | Имена выходных полей для агрегатов. По умолчанию создаются из операции и поля, например sum_field или average_field. |
| cross | Boolean | Включать ли в результат все сочетания значений полей groupby (по умолчанию false). При true создаются также отсутствующие в данных группы с нулевым количеством, как если бы drop было false. При потоковых обновлениях новые значения группировки добавляют группы, а прежние сохраняются. Полезно для фасетов со всеми возможными разделами данных. |
| drop | Boolean | Удалять ли пустые группы с нулевым количеством (по умолчанию true). После обновлений, например интерактивной фильтрации, группа может опустеть. Обычно она исчезает из результата, но для некоторых диаграмм, в частности гистограмм, её полезно сохранить. |
| key | Field | Необязательное ключевое поле для ускорения вычисления ключа группы. Вместо сочетания всех полей groupby используется только это поле. Например, для гистограммы достаточно bin0, если bin1 не добавляет различий между группами. Используйте параметр осторожно: ключ должен однозначно определять каждое сочетание значений groupby. |
Агрегирующие операции
Все допустимые агрегирующие операции.
| Операция | Описание |
|---|---|
| count | Общее число объектов данных в группе. |
| valid | Число значений поля, которые не считаются отсутствующими и не равны NaN. |
| missing | Число значений поля, равных null, undefined или пустой строке (''). |
| distinct | Число различных значений поля. |
| sum | Сумма значений поля. |
| product | Произведение значений поля. ≥ 5.10 |
| mean | Среднее значение поля. |
| average | Среднее значение поля; синоним mean. |
| variance | Выборочная дисперсия значений поля. |
| variancep | Дисперсия генеральной совокупности. |
| stdev | Выборочное стандартное отклонение. |
| stdevp | Стандартное отклонение генеральной совокупности. |
| stderr | Стандартная ошибка значений поля. |
| median | Медиана значений поля. |
| q1 | Нижняя граница межквартильного диапазона. |
| q3 | Верхняя граница межквартильного диапазона. |
| ci0 | Нижняя граница 95-процентного доверительного интервала среднего, рассчитанного бутстрепом. |
| ci1 | Верхняя граница 95-процентного доверительного интервала среднего, рассчитанного бутстрепом. |
| min | Минимальное значение поля. |
| max | Максимальное значение поля. |
| argmin | Исходный объект данных с минимальным значением поля. |
| argmax | Исходный объект данных с максимальным значением поля. |
| values | Список объектов данных в группе. |
Использование
Для следующих входных данных:
[
{"foo": 1, "bar": 1},
{"foo": 1, "bar": 2},
{"foo": null, "bar": 3}
]
преобразование aggregate:
{
"type": "aggregate",
"fields": ["foo", "bar", "bar"],
"ops": ["valid", "sum", "median"],
"as": ["v", "s", "m"]
}
создаёт результат:
[{"v": 2, "s": 6, "m": 2}]
Использование с groupby
Для следующих входных данных:
[
{"foo": "a", "bar": 1},
{"foo": "a", "bar": 2},
{"foo": "b", "bar": 3}
]
преобразование aggregate:
{
"type": "aggregate",
"groupby": ["foo"]
}
создаёт результат:
[
{"foo": "a", "count": 2},
{"foo": "b", "count": 1}
]
Использование с вложенными полями
Для следующих входных данных:
[
{"foo": {"baz": "a"}, "bar": 1},
{"foo": {"baz": "a"}, "bar": 2},
{"foo": {"baz": "b"}, "bar": 3}
]
преобразование aggregate:
{
"type": "aggregate",
"groupby": ["foo.baz"]
}
создаёт результат:
[
{"foo.baz": "a", "count": 2},
{"foo.baz": "b", "count": 1}
]
Имя выходного поля "foo.baz" теперь является обычной строкой, а не ссылкой на вложенное поле. Для обращения к нему в других частях спецификации экранируйте точку: "foo\\.baz". Иначе Vega воспримет его как путь к вложенному полю. Чтобы избежать этого, можно сначала извлечь данные преобразованием project.