Блоки данных работают через SQL-запросы к подключённым источникам. Запрос описывается в конфигурации блока, проверяется до выполнения и кэшируется.
Выполнение и проверка
- выполнение —
POST /api/query/executeк любому подключённому источнику; - проверка до выполнения —
POST /api/query/validate: синтаксис, колонки, источники; - у запроса есть таймаут (30 000 мс по умолчанию) и лимит строк (10 000 по умолчанию) — защита от случайных «SELECT * FROM огромная_таблица»;
- описание запроса поддерживает Scriban-переменные документа.
Кэширование
- кэш результатов ускоряет повторные открытия отчёта;
- статистика кэша —
GET /api/query/cache/statistics; - очистка —
POST /api/query/cache/clear.
Серверные вычисления
Тяжёлая аналитика считается на сервере: гистограммы (POST /api/query/histogram) и box plot (POST /api/query/boxplot) не гоняют данные в клиент целиком — на клиент уходит готовый результат.
Привязка к блоку
Запрос живёт в конфигурации блока и привязывается по queryId. Валидатор проверяет существование запроса и его источника — подробнее в разделе Проверки и авто-коррекция.
ИИ и производительность
Не хотите писать SQL? Опишите словами, что нужно — ИИ напишет или исправит запрос (подробнее — ИИ-агент в отчёте). Рекомендации по производительности: фильтруйте по датам, считайте агрегаты в SQL, а не в блоке, и используйте лимит строк.