Трансформация collect относится к механизму упорядочивания уже отфильтрованных и агрегированных данных перед их визуальным отображением. В экосистеме Vega она используется как низкоуровневый этап, формирующий детерминированный порядок кортежей (tuples) в потоке данных.
В отличие от агрегации или фильтрации, collect не изменяет содержательную структуру данных. Его задача заключается в стабилизации порядка элементов, что критично для:
В Vega-Lite аналогичная логика чаще скрыта за декларативными
параметрами sort, однако при компиляции спецификации в Vega
collect может появляться как часть итогового dataflow-графа.
В Vega модель данных представлена как направленный граф потоков преобразований. Каждый узел трансформации получает набор кортежей и возвращает новый набор.
Collect выполняет:
Формально:
Важно, что collect не выполняет группировку и не изменяет cardinality набора данных.
Типичный порядок обработки данных в Vega:
Collect располагается ближе к визуальному слою, поскольку его результат напрямую влияет на порядок отрисовки элементов.
Основная функциональность collect — сортировка. Поддерживаются следующие стратегии:
Сортировка по одному или нескольким полям:
Приоритет полей задаётся порядком перечисления.
Vega допускает использование динамических сигналов для управления порядком:
Это позволяет изменять порядок без пересборки dataflow-графа.
Collect обеспечивает стабильность порядка при равных значениях ключей. Это важно для:
{
"type": "collect",
"sort": {
"field": ["category", "value"],
"order": ["ascending", "descending"]
}
}
В этом случае:
categoryvalue в обратном
порядкеCollect особенно важен при работе с маркерами:
Порядок точек напрямую влияет на форму линии. Без collect возможны:
Для площадных графиков порядок точек определяет корректность заливки. Неправильная сортировка приводит к:
При дискретных данных collect обеспечивает:
В стековых диаграммах collect выступает как предварительный этап перед stack transform.
Последовательность:
Нарушение порядка на этапе collect приводит к:
В Vega-Lite сортировка чаще выражается декларативно:
"sort": {
"field": "value",
"order": "descending"
}
При компиляции спецификации:
Таким образом, collect является низкоуровневой реализацией
высокоуровневого sort.
Одним из ключевых свойств collect является обеспечение детерминированного вывода.
Это критично в случаях:
Без явной сортировки возможны различия порядка даже при идентичных данных, особенно если источник — асинхронные потоки.
Collect может быть реализован:
В больших наборах данных оптимизация включает:
Несмотря на универсальность, collect не предназначен для:
Он строго работает в рамках перестановки уже существующих кортежей.
Если collect не задан:
Если шкала использует один порядок, а collect другой:
При динамических сигналах:
В архитектуре декларативной визуализации collect играет роль связующего звена между:
В сочетании с transform pipeline он обеспечивает предсказуемость визуального результата, что особенно важно для сложных многослойных сцен и комбинированных графиков.