Датасеты и чарты
Вместо того чтобы каждый виджет дашборда нёс собственный ad-hoc SQL или QuerySpec, модуль предлагает слой Датасет → Чарт: источник данных описывается один раз и переиспользуется в любом количестве визуализаций.
Датасет
Датасет — это всё, что нужно для «строкового» источника данных, кроме самого списка выбираемых колонок: таблица, WITH, JOIN'ы и фильтры (в терминах DataLens — «аватар» запроса), плюс именованные поля, разбитые на два вида:
- измерения (dimensions) — то, по чему группируют и фильтруют (категория, дата, статус);
- меры (measures) — то, что агрегируют (
SUM/AVG/COUNT/MIN/MAX), у каждой меры есть агрегация по умолчанию.
Дополнительно можно завести вычисляемые поля — формулы над обычными и другими вычисляемыми полями датасета (например, margin = (price - cost) / price), тоже помеченные как измерение или мера. Формулы используют тот же ограниченный набор арифметики (+ - * /), что и вычисляемые поля No-Code конструктора — никаких произвольных функций и строковых операций.
Чарт
Чарт выбирает датасет и несколько его полей — измерение для оси X/категории, одну или несколько мер для оси Y, опционально поле серии, чтобы разбить на несколько линий/рядов — и всё, ни единой строчки SQL. Поверх полей датасета чарт может задать собственные фильтры, сортировку, лимит и оконные функции (ChartWindow) — но только над обычными (не вычисляемыми) полями, то же ограничение, что у оконного редактора No-Code конструктора.
Dataset + Chart компилируются в обычный QuerySpec тем же компилятором, что использует остальной модуль дашбордов — чарт не отдельный движок выполнения, а ещё один способ прийти к уже существующему пути.
Демо-дашборды
POST /api/dashboards/demo/seed генерирует на выбранной базе набор примеров именно через связку Датасет → Чарт → Размещение — многотабличные JOIN'ы, вычисляемые поля на уровне строки и агрегатов, оконные функции, глобальные фильтры с KPI-трендом и drill-down. Идемпотентно: повторный вызов сначала удаляет ранее созданные демо-объекты (по префиксу имени) и создаёт их заново.