TGViewer
Купер.тех Купер.тех @tech_kuper · 8.08K subscribers
Post #1439 2.57K
📝 Не сошлись в отчётах: как дебажить метрики

У отчётов тоже бывают свои «галлюцинации»: метрика называется одинаково, запрос выглядит правильно, формулы проверены, а цифры почему-то не совпадают.

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

1️⃣ Сначала понять, что именно сравниваем

В е-grocery легко незаметно запутаться даже в одинаково выглядящих метриках:
— выручка: gross vs net (до/после промо, отмен, субсидий);
— заказы: оформленные vs собранные vs доставленные;
— товары: заказанная корзина vs фактически доставленные позиции (с учётом ненайденных товаров, которые были заменены/отменены);
— время: учитываем ли мы часовой пояс или приводим все к московскому времени;
— разные идентификаторы: в одном сервисе используются одни идентификаторы сущностей, в другом — другие.

Поэтому первым шагом лучше убедиться, что совпадает не только название метрики, но и её смысл.


2️⃣ Упростить запрос до примитива

В отчётах и запросах всегда есть несколько слоев: сырые данные (логи заказов/событий) ➔ агрегация метрик по разрезам ➔ финальный расчет метрик с учетом фильтров.

Если цифры не сходятся, то идём вниз:
— берём одну таблицу (например, таблицу с заказами);
— убираем все JOIN и фильтры;
— проверяем базовую агрегацию;
— затем добавляем шаги обратно по одному.

Расхождение почти всегда появляется на одном конкретном слое трансформации.


3️⃣ Проверить кардинальность JOIN’ов

Одна из самых частых причин расхождения — JOIN, который ведёт себя не так, как мы от него ждали. Например, кажется, что связь должна быть 1-к-1, а на деле получается 1-к-N.

В e-grocery это можно понять по разным признакам: в одном заказе может быть несколько позиций, товар при сборке могут заменить, часть товаров могут отменить, а у заказа может быть несколько событий со статусами. Если не учесть это в логике соединения таблиц, цифры начинают незаметно расходиться.

Обычно это видно по симптомам: выручка как будто немного выросла, заказов стало подозрительно больше, а средний чек начал «плавать». В такой момент стоит проверить не только условие JOIN, но и то, сколько строк получается до и после него.


4️⃣ Сравнивать не агрегаты, а строки

Когда в одном отчёте 100 млн, а в другом 102 млн, сама по себе разница почти ничего не объясняет. Гораздо полезнее найти конкретные заказы, события или товары, которые эту разницу создают.

Что делать?
— вместо того, чтобы спорить на уровне итоговых чисел, берём разницу двух выборок до строк;
— ищем, какие идентификаторы заказов есть в одной строке, но отсутствуют в другой;
— проверяем, на каком шаге они появились/исчезли;

После этого несложного шага часто сразу видно причину ошибки: отмена, а может дубль события или JOIN.


Возможно какие-то вещи являются базовыми, но про них стоит вспомнить лишний раз, чтобы тратить меньше времени на работу и не беспокоиться за отчёт.
  • 🔥 5
  • ❤ 4
More from @tech_kuper
  1. Sep 10, 2026📓 Как тратить меньше времени на работу с данными? В Купер.тех аналитики ежедневно работаю…
  2. Aug 25, 2026😎 Вот бы лето не кончалось... Лето каждый год начинается одинаково: кажется, что впереди…
  3. Aug 13, 2026Post #1465
  4. Aug 13, 2026🌧 Никто из нас не представлял середину августа такой дождливой... До выходных осталось со…
  5. Aug 5, 2026📢 Что происходит с React Native прямо сейчас — и почему технология до сих пор остаётся од…
  6. Jul 30, 2026✨Хороший work-life balance сам себя не настроит В ML много задач, где мозг постоянно что-т…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →