Перейти к содержанию
VVizorLabsТехнический центрОсновной сайт

BOX 3.2 / BOX 5.0

Создание и получение отчётов

Системные отчёты BOX, собственные BI-запросы к ClickHouse для BOX 3.2.1, статусы событий, часовые пояса и проверка соединений справочников.

Для кого: функциональный администратор / пользователь
На этой странице

Отчёты

Путь: Журналы → Отчёты, /reports.

Раздел хранит результаты формирования отчётов. Выберите тип отчёта, период и тип файла, затем нажмите «Показать». Найдите нужный результат по времени формирования и формату. Если экспорт запускается из журнала, дождитесь его завершения; наличие фонового задания ещё не означает готовность файла.

Для воспроизводимого отчёта запишите: период и часовой пояс, камеры, категории, решение, применённые дополнительные фильтры и дату выгрузки. Два файла могут отличаться из-за поздней проверки событий или иной области доступа пользователя. Срок и объём хранения отчётов настраивает администратор.

Журналы → Отчёты: интерфейс BOX 5.0.
Журналы → Отчёты: интерфейс BOX 5.0. Открыть в полном размере

BI и DataLens: область применимости BOX 3.2.1

Собственный BI-отчёт позволяет объединить события по камерам, категориям и результатам проверки. Следующие разделы применимы к схеме BOX 3.2.1 с компонентами event-storage 1.6.4, camera-storage 1.5.9, counter-storage 2.0.4, monitoring2 1.1.4 и DataLens UI 0.795.0. Перед выполнением SQL сверяйте эти версии. Для других сборок BOX 3.2 и для BOX 5.0 совместимость схемы нужно подтвердить отдельно.

В описанной конфигурации BI читает ClickHouse. События, справочники и мониторинг доступны через одно подключение, счётчики — через отдельное; прямое соединение таблиц разных экземпляров не предполагается. Перед настройкой получите у администратора параметры подключения и учётную запись только для чтения с разрешённой областью данных и ограничениями нагрузки.

Сверьте версии и доступные таблицы, создайте личные копии наборов данных и диаграмм. Восстановление поставляемых дашбордов может заменить штатные наборы; собственные изменения сохраняйте отдельно. Ожидаемый результат — самостоятельный набор BI, показатели которого сверены с BOX за тот же период и с теми же фильтрами.

Поля события и границы периода

В таблице default.event одна строка представляет запись события. Количество строк не равно числу людей. Уникальность event_id проверяйте в своей выборке: её наблюдение на одной установке не заменяет ограничение уникальности в БД.

В описанной схеме timestamp использует UTC. Задавайте часовой пояс явно и используйте полуоткрытый интервал [начало, конец): начало включается, конец исключается. Для локального календарного периода замените UTC в обеих границах на часовой пояс отчёта, например Europe/Moscow. После преобразования часового пояса дополнительное ручное смещение часов не требуется. Ограничивайте timestamp до группировок и соединений.

Поле / таблицаНазначение
event_id / camera_idИдентификаторы события и камеры.
confirmation_statusNO_STATUS — не проверено; CONFIRMED — подтверждено; DENIED — отклонено; WITHOUT_REVIEW — без проверки.
pr_obj_zoneКод типа зоны (zid), а не уникальный идентификатор нарисованного контура.
pr_obj_sec_obj_sec_category_ru_name / pr_obj_sec_obj_sec_category_en_nameНазвания вторичной категории, сохранённые в событии; они могут отличаться от текущего справочника.
default.camerasСправочник камер; ключ camera_id, подписи camera_name и object_name.
default.camera_zonesЗоны камеры; пара camera_id + zid может соответствовать нескольким контурам.

Пример: события и доля отклонённых среди проверенных

Пример SELECT рассчитан на указанную схему. Замените даты и часовой пояс на требуемый период, согласуйте лимиты запроса и выполните его под учётной записью только для чтения. Здесь выбран пример недели в UTC. Запрос иллюстрирует расчёт; на вашей установке его результат необходимо проверить.

Знаменатель доли отклонённых — только CONFIRMED + DENIED. NO_STATUS и WITHOUT_REVIEW в него не входят. Если проверенных событий нет, процент возвращается как NULL. Суммировать числовые идентификаторы событий для вычисления долей нельзя.

Доля отклонённых характеризует решения по проверенной выборке. Она не является точностью детектора, precision или recall и не описывает автоматически все поступившие события.

SELECT
    count() AS event_rows,
    countIf(confirmation_status = 'CONFIRMED') AS confirmed,
    countIf(confirmation_status = 'DENIED') AS denied,
    countIf(confirmation_status = 'NO_STATUS') AS awaiting_review,
    countIf(confirmation_status = 'WITHOUT_REVIEW') AS without_review,
    round(
        100.0 * countIf(confirmation_status = 'DENIED')
        / nullIf(countIf(confirmation_status IN ('CONFIRMED', 'DENIED')), 0),
        1
    ) AS denied_share_of_reviewed_pct
FROM default.event
WHERE timestamp >= toDateTime('2026-09-01 00:00:00', 'UTC')
  AND timestamp <  toDateTime('2026-09-08 00:00:00', 'UTC');

Соединение справочников и сверка результата

Перед присоединением названий приведите справочник к одной строке на ключ. Для cameras это camera_id, для camera_zones — camera_id + zid. Прямое соединение событий с несколькими строками одного ключа увеличит число строк и исказит агрегаты.

Если применяете any(name) после GROUP BY camera_id, zid, это выбирает произвольную подпись среди совпавших зон. Так можно убрать размножение строк, но нельзя установить точный геометрический контур события. У object_tree_cameras учитывайте иерархию: таблица может включать предков и корень; ограничивайте конкретный object_observation_id или используйте owner=true, когда нужен именно владелец.

LEFT JOIN позволяет сохранить событие без найденной подписи камеры. Если имя отсутствует, показывайте идентификатор; проверяйте и NULL, и пустое значение в зависимости от настроек соединения. Справочник может кратковременно быть пустым при перестроении. События удалённой камеры могут сохраняться до удаления по политике хранения.

  • Зафиксируйте период, часовой пояс, камеры, категории, статусы и момент чтения.
  • Сравните count() и число уникальных event_id до и после добавления справочников; соединение с подписями не должно увеличивать число событий.
  • Сверьте небольшую выборку с журналом BOX и учтите область доступа. Доступ к ClickHouse должен быть ограничен отдельно; наличие роли в интерфейсе само по себе не доказывает фильтрацию SQL.
  • При расхождении проверьте поздние решения оператора, задержку синхронизации, изменения справочников и фактическую глубину хранения.
  • Сохраните текст запроса, параметры и контрольный результат вместе с собственным набором BI.