SABSUS
← Все статьи/Практика бизнеса
Отчётность сети · Достаточность данных

Как принять общий P90, если филиалы прислали только свои показатели

Редакция SABSUS ·

Филиалы прислали P90 и число передач. Владелец просит общий показатель сети, но этих карточек может не хватить. До согласования выгрузки определите, какой результат нужен и какие сведения позволят его проверить. Разберём выбор на полном учебном наборе.

Синие и оранжевые шарики из двух прозрачных желобов попадают в широкий стеклянный лоток; две гладкие плитки лежат отдельно справа.
SABSUS / Практика бизнеса · Два желоба, общий стеклянный лоток с шариками и отдельные плитки. Концептуальная иллюстрация.

Зафиксируйте, какой итог принимаете

Задача здесь узкая: принять общий показатель уже завершённых передач заказов. В учебном периоде с 1 по 7 сентября 2026 года включительно по UTC учтены все 20 подходящих передач двух филиалов. Каждая завершилась внутри периода, имеет отдельный ID и принадлежит ровно одному филиалу. Измеряем время от готовности полного комплекта до физической передачи исполнителю. Единица — минута; сохранённые значения целые, разрешение записи — одна минута. Все наблюдения имеют одинаковый вес.

Используем ближайший ранг: сортируем длительности, берём позицию ceil(0,90 × n), считая с единицы и округляя вверх. Интерполяции нет. Это соответствует дискретному процентилю; непрерывный вариант может интерполировать между значениями. Определения PostgreSQL. Поэтому вместе с P90 сохраняйте метод.

Это полная совокупность завершённых передач по заданному условию, а не вся работа сети. Открытые заказы не превращаются в завершённые длительности; их отдельный контроль описан в руководстве по диспетчеризации. На этих числах нельзя оценить будущий сервис, причины задержек или потребность в сотрудниках.

Одинаковые карточки допускают два итога

Рассмотрим два вымышленных варианта одного отчёта, не два последовательных периода. В каждом филиал А показывает десять наблюдений и P90 = 10 минут, филиал Б — десять наблюдений и P90 = 100 минут. Полные длительности ниже; повторяющиеся числа относятся к разным передачам.

Полные исходные ряды двух вариантов, минуты
ВариантФилиал АФилиал Б
Первый1, 1, 1, 1, 1, 1, 1, 1, 10, 12050, 50, 50, 50, 50, 50, 50, 50, 100, 120
Второй1, 1, 1, 1, 1, 1, 1, 1, 10, 1150, 50, 50, 50, 50, 50, 50, 50, 100, 120

В каждом филиале P90 занимает девятую позицию: карточки действительно совпадают. В объединённом ряду нужна восемнадцатая позиция. В первом варианте перед ней стоят восемь единиц, десятка и восемь значений 50: всего 17 наблюдений. Восемнадцатое равно 100. Во втором добавилось значение 11 вместо 120, и восемнадцатое теперь равно 50.

Среднее филиальных P90 с весами по числу наблюдений равно (10 × 10 + 100 × 10) / 20 = 55 минут в обоих вариантах. Оно не совпадает ни с одним правильным общим P90. Следовательно, карточек недостаточно для восстановления такого итога в общем случае. Исправление весов не вернёт потерянные значения.

Меняется и ответ на учебный вопрос «не менее 90% этих передач заняли не более 60 минут?». В первом варианте уложились 17 из 20, то есть 85%; во втором — 18 из 20, то есть 90%. Это проверка условного порога по прошлым наблюдениям, без договорного SLA или обещания следующему клиенту.

Карточки совпали. Общий ряд различается.

Филиал А: n = 10; P90 = 10 мин

Филиал Б: n = 10; P90 = 100 мин

В каждой ячейке: позиция → минуты

Первый вариант

  1. 1 → 1
  2. 2 → 1
  3. 3 → 1
  4. 4 → 1
  5. 5 → 1
  6. 6 → 1
  7. 7 → 1
  8. 8 → 1
  9. 9 → 10
  10. 10 → 50
  11. 11 → 50
  12. 12 → 50
  13. 13 → 50
  14. 14 → 50
  15. 15 → 50
  16. 16 → 50
  17. 17 → 50
  18. 18 → 100
  19. 19 → 120
  20. 20 → 120

Позиция 18: общий P90 = 100 мин

Второй вариант

  1. 1 → 1
  2. 2 → 1
  3. 3 → 1
  4. 4 → 1
  5. 5 → 1
  6. 6 → 1
  7. 7 → 1
  8. 8 → 1
  9. 9 → 10
  10. 10 → 11
  11. 11 → 50
  12. 12 → 50
  13. 13 → 50
  14. 14 → 50
  15. 15 → 50
  16. 16 → 50
  17. 17 → 50
  18. 18 → 50
  19. 19 → 100
  20. 20 → 120

Позиция 18: общий P90 = 50 мин

Два вымышленных варианта одного периода. Каждая передача учтена один раз; все значения указаны в минутах.

Вместо строк можно сохранить точные частоты

Для самого расчёта необязательно передавать отдельную строку каждой передачи. Можно перечислить каждое сохранённое значение длительности и число его повторений. Складывая количества при одинаковом значении по непересекающимся филиалам, получаем тот же набор с той же кратностью. Затем накапливаем количество от меньших значений к большим.

Точные частоты после объединения
МинутыПервый: количествоПервый: накопленоВторой: количествоВторой: накоплено
18888
101919
1109110
50817818
100118119
120220120

В первом столбце накоплений 18 достигается на 100 минутах, во втором — на 50. Это точное восстановление процентиля записанных значений. Секунды, которых нет в исходной записи, таблица не восстанавливает. Восемь передач по 50 минут нельзя сократить до одного наблюдения: одинаковое время не означает одинаковый заказ.

Но частоты не сохраняют идентификаторы отдельных передач и сами не доказывают отсутствие пересечения выгрузок. Запросите реестр включённых частей: филиал, период, фильтры, версию и подтверждение единственного включения каждой передачи. Если нужна проверка состава по ID, её проводят по разрешённому первичному источнику. Для теста достаточно вымышленных идентификаторов; контакты клиентов не нужны.

Диапазоны дают границу, а не точное значение

Теперь оставим только количества в интервалах (0; 10], (10; 60], (60; 120]: левая граница исключена, правая включена. Для второго варианта получаем 9, 9 и 2. Заменим все восемь значений 50 на 59. Количества останутся прежними, но P90 станет 59 вместо 50.

По этой интервальной сводке восемнадцатая позиция находится в (10; 60]. При целых минутах это значения от 11 до 60; выбрать одно из них нельзя. Середина интервала 35 не становится точным результатом. Для реальной выгрузки отдельно задайте нули, ошибки, значения за крайними границами и одинаковые границы у всех частей.

Если нужен только ответ про 60 минут, достаточно числа уложившихся и общего количества при одном условии «не более». В наших вариантах это 17/20 и 18/20. Такой запрос уже, чем запрос P90. Порядок объединения долей разобран в руководстве по KPI сети.

Когда подходит приближённый итог

Если допускается оценка, запросите сохранённое состояние алгоритма для объединения, а не список готовых P50/P90/P95. BigQuery KLL допускает объединение; проверенные функции имеют статус Preview. Нужны допустимые состояния совместимого типа. При разной точности обычно действует наименьшая; документация оговаривает исключение для малых агрегатов, ещё хранящих вход точно. Повторное построение может менять ответ. Гарантия относится к ошибке ранга, а не к фиксированным минутам. Обычные приближённые агрегаты BigQuery не предоставляют сохраняемое состояние для повторной агрегации. Функции KLL; состояния и точность.

Запишите реализацию, версию, тип, точность, совместимость и документированное вероятностное правило ошибки. Несколько совпадений с эталоном не доказывают это правило. Для решения около 60 минут нужны подходящие именно ему основания. Не обещайте одинаковый результат каждого повторного запуска.

Согласуйте будущие разрезы и исправления

Сводка целого филиала не позволяет потом выделить только вечерние передачи, если время суток в ней уже отсутствует. Даже точные частоты всей точки не отвечают на произвольный новый фильтр. До подготовки данных перечислите нужные разрезы. Например, отдельные непересекающиеся ячейки «филиал × день × способ передачи» позволят собрать согласованные комбинации этих ячеек, но не восстановят новый признак заказа.

Для исправленной записи заранее установите, кто выпускает новую версию затронутой части, как она заменяет прежнюю и как подтверждается полный состав итогового набора. Не объединяйте старую и исправленную версии одной части как разные наблюдения. Сохраните связь между версиями данных и принятым результатом по регламенту воспроизводимой аналитики.

Для состояния алгоритма отдельно подтвердите путь пересборки; произвольное удаление записи не предполагается.

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

Проверьте представление на контрольном наборе

Передайте аналитику оба исходных варианта и назовите ожидаемый вид ответа. Проверка должна относиться к выбранному представлению, иначе интервальную оценку легко принять за точное число.

  1. Точный расчёт: строки и точные частоты дают 100 в первом варианте и 50 во втором; количество в каждом равно 20.
  2. Повторная группировка: разделение тех же записей на другие непересекающиеся части не меняет точный ответ. Равные длительности сохраняют все повторения.
  3. Повторная передача части: уже учтённая версия выявляется до объединения. Совпадение общего количества само по себе не подтверждает состав.
  4. Пустая группа: при отсутствии подходящих наблюдений показывается «нет данных», а не нулевой P90. Неполученный филиал отдельно помечается как пропуск.
  5. Интервалы: два набора с 50 и 59 дают одинаковые количества и один допустимый диапазон; ни один произвольно выбранный центр не подписан точным.

В решении владельца запишите: принят точный показатель записанных длительностей; принят только диапазон; принята оценка с указанным правилом ошибки; либо нужный показатель пока не подтверждён. Укажите представление, область данных, версию и незакрытые ограничения.

Для отчётности SABSUS используйте этот набор как требование к обсуждаемой конфигурации. Поддержку нужных выгрузок и расчётов подтверждают отдельно. Полезный итог встречи — согласованный состав данных и доказательство допустимого ответа, по которому можно принять отчёт.

Источники и продолжение

Документация поясняет определения и один пример реализации. Числовые наборы и проверки в статье авторские.

Источники проверены 17 октября 2026 года. Все передачи вымышлены. Арифметика проверена отдельно; PostgreSQL, BigQuery и SABSUS на этих данных не запускались.