Цикл аналитической работы: от бизнес-вопроса к решению
Содержание курса
Метрика и единица анализа
Метрика — конкретная числовая характеристика, которую считают для ответа на вопрос. Единица анализа — объект, по которому ведётся подсчёт: заказ, клиент, день, канал.
Эти два понятия нужно называть явно, потому что от их выбора зависит, что считается одним наблюдением и какие строки попадают в агрегацию. Без фиксации единицы анализа одна и та же метрика может дать разные числа — и оба будут «правильными» по-своему, но несопоставимыми.
Важно разделить два понятия, которые легко спутать: единица анализа и разрез результата. Единица анализа говорит о том, что считается одним наблюдением — например, оплаченный заказ. Разрез результата определяет, как агрегировать итог в отчёте — например, по месяцу. Это независимые решения: один и тот же заказ как единица анализа может быть посчитан в разрезе месяца, канала или дня, и во всех случаях метрика остаётся той же — число оплаченных заказов.
Рассмотрим конкретный пример. В таблице orders каждая строка — это один заказ (order_id). Метрика — «число оплаченных заказов», единица анализа — заказ. Запрос для месячного отчёта:
SELECT
strftime('%Y-%m', order_date) AS period,
COUNT(*) AS paid_orders
FROM orders
WHERE status = 'paid'
GROUP BY period
ORDER BY period;
Результат этого запроса по данным магазина «Маяк»:
| period | paid_orders |
|---|---|
| 2024-01 | 82 |
| 2024-02 | 89 |
| 2024-03 | 101 |
| 2024-04 | 106 |
| 2024-05 | 112 |
Здесь GROUP BY period задаёт разрез результата — месяц. Единица анализа — заказ: каждая строка таблицы orders соответствует ровно одному order_id, поэтому COUNT(*) считает именно заказы. Разрез результата не меняет того, что мы считаем; он лишь определяет, в каком разрезе итог выводится.
Теперь представьте, что вместо orders взяли гипотетическую таблицу order_items, не изменив вопроса. В одном заказе может быть несколько позиций, поэтому COUNT(*) по order_items вернёт число позиций, а не заказов. Метрика та же на словах — «сколько продали» — но единица анализа другая: одно наблюдение теперь позиция, а не заказ, и число окажется больше. Чтобы этого избежать, нужно сначала привести данные к зерну заказа — например, сгруппировать order_items по order_id — и только после этого считать количество заказов.
Правило: прежде чем писать запрос, явно назвать, что считается одним наблюдением, и убедиться, что исходные данные имеют именно такое зерно. Разрез итогового отчёта — отдельный выбор, который диктуется вопросом, а не единицей анализа.

Оплаченные заказы и их выручка до возвратов — разные метрики. По оси Y слева заказы, справа тысячи рублей; данные «Маяка», январь–май 2024.
