продуктовая-аналитикаметрикисобеседованиеsqlдиагностикакейсы

Метрика упала: фреймворк диагностики за 6 шагов

2026-06-09 10 мин

«DAU упал на 12% за неделю. Что будешь делать?» — на этот вопрос нужно отвечать не гипотезами вроде «наверное, маркетинг отключил рекламу», а структурой. Правильный ответ всегда начинается с одного: сначала проверь, реально ли упала метрика, а не сломался ли подсчёт. Дальше идёт воронка диагностики: данные → сегменты → сезонность → парадокс Симпсона → внешние факторы → действие. Этот пост разбирает каждый шаг с SQL-срезами, которые можно показать прямо на собеседовании. Если пройти их по порядку, вы либо находите причину, либо честно сужаете её до конкретного сегмента — и то, и другое сильнее панического перебора версий.

Почему «метрика упала» — главный вопрос продуктового собеса

Этот кейс встречается на собесах аналитика чаще любого SQL-запроса. Причина простая: он проверяет не знание синтаксиса, а мышление. Интервьюер смотрит, идёте ли вы от данных к выводам или сразу прыгаете к красивой бизнес-гипотезе. Хороший аналитик за 2 минуты декомпозирует падение, а не выдаёт 10 случайных причин.

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

Разбор похожих кейсов есть в разделе вопросы с собесов, а потренироваться в формате реального диалога можно через AI мок-интервью.

С чего начать диагностику падения метрики?

Не с гипотез. Первые два вопроса всегда технические:

Резкий обрыв (метрика упала с обрыва в один день) почти всегда означает технический сбой: сломался ETL, поменялась схема событий, отвалился трекинг, выкатили баг. Плавное снижение в течение недель — это уже про продукт, рынок или сезонность.

Базовый чеклист по порядку:

ШагЧто проверяемТипичная находка
1. ДанныеЦелостность пайплайна, дубли, пропускиСломался лог, задвоились события
2. СегментыПлатформа, гео, версия, источникПадение только на iOS / в одном регионе
3. СезонностьДень недели, праздники, YoY«Падение» — это просто выходные
4. СимпсонСмена структуры (mix-shift)Общая метрика врёт из-за сдвига долей
5. Внешние факторыРелизы, маркетинг, конкурентыВыкатили апдейт, отключили канал
6. ДействиеГипотеза → проверка → решениеОткат релиза / алерт / эксперимент

Дальше разбираем каждый шаг.

Как проверить, что проблема не в самих данных?

Это первый и самый недооценённый шаг. В 30-40% реальных «падений» метрика на самом деле не падала — сломался её подсчёт. Прежде чем звать продакта, проверьте пайплайн.

Что искать: пропуски событий в отдельные дни, задвоение строк, изменение схемы (переименовали поле event_name), сдвиг таймзоны, поздно приехавшие данные (late-arriving events).

Срез «события по дням» — мгновенно видно дыру в логе:

SELECT
    DATE(event_time)              AS day,
    COUNT(*)                      AS events,
    COUNT(DISTINCT user_id)       AS users,
    COUNT(*) * 1.0
        / NULLIF(COUNT(DISTINCT user_id), 0) AS events_per_user
FROM events
WHERE event_time >= CURRENT_DATE - INTERVAL '21 days'
GROUP BY DATE(event_time)
ORDER BY day;

Если в один из дней events резко проваливается, а events_per_user остаётся прежним — это потеря данных, а не пользователей. Если users стабилен, но events_per_user упал вдвое — отвалилась часть трекинга событий.

Проверка на дубли (раздутая метрика — тоже «аномалия»):

SELECT event_id, COUNT(*) AS cnt
FROM events
WHERE event_time >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY event_id
HAVING COUNT(*) > 1
LIMIT 20;

Только убедившись, что данные чистые, идём в продукт. Отработать такие срезы на живой базе можно в SQL-тренажёре, а сам подход к свежести данных разобран в метриках.

Как сегментировать падение, чтобы найти причину?

Если данные целы, метрика — это всегда сумма по сегментам. Падение редко равномерно по всем. Задача: найти сегмент, где провал максимальный, потому что он и есть точка входа в причину.

Режьте по очереди:

SQL-срез DAU по платформам с сравнением двух недель:

SELECT
    platform,
    SUM(CASE WHEN day >= CURRENT_DATE - INTERVAL '7 days'
             THEN dau ELSE 0 END) AS dau_this_week,
    SUM(CASE WHEN day <  CURRENT_DATE - INTERVAL '7 days'
              AND day >= CURRENT_DATE - INTERVAL '14 days'
             THEN dau ELSE 0 END) AS dau_prev_week
FROM (
    SELECT DATE(event_time) AS day,
           platform,
           COUNT(DISTINCT user_id) AS dau
    FROM events
    WHERE event_time >= CURRENT_DATE - INTERVAL '14 days'
    GROUP BY DATE(event_time), platform
) t
GROUP BY platform
ORDER BY dau_this_week;

Считаем процент изменения: Изменение = (текущая неделя − прошлая) / прошлая × 100%. Если на iOS −40%, а на Android −2% — вы уже знаете, где копать. Логика «нашёл худший сегмент → углубляйся в него» работает рекурсивно: внутри iOS режьте по версиям, внутри версии — по экранам.

Что такое сезонность и как её исключить?

Половина мнимых падений — это сезонность. DAU всегда ниже в выходные у B2B-продукта и выше у развлекательного. Если сравнивать вторник с воскресеньем, «падение» окажется обычным циклом.

Три уровня сезонности, которые надо исключить:

Срез «тот же день недели за 4 недели» убирает недельный шум:

SELECT
    EXTRACT(DOW FROM day)          AS weekday,   -- 0=вс ... 6=сб
    AVG(dau)                       AS avg_dau,
    MAX(CASE WHEN day >= CURRENT_DATE - INTERVAL '7 days'
             THEN dau END)         AS dau_last
FROM (
    SELECT DATE(event_time) AS day,
           COUNT(DISTINCT user_id) AS dau
    FROM events
    WHERE event_time >= CURRENT_DATE - INTERVAL '35 days'
    GROUP BY DATE(event_time)
) d
GROUP BY EXTRACT(DOW FROM day)
ORDER BY weekday;

Если dau_last для каждого дня недели близок к avg_dau за 4 недели — никакого падения нет, вы поймали выходные. Правило простое: никогда не сравнивайте «сегодня с вчера», сравнивайте с тем же днём недели или применяйте скользящее среднее за 7 дней.

Что такое парадокс Симпсона и почему он ломает метрики?

Парадокс Симпсона — это когда общая метрика падает, хотя в каждом отдельном сегменте она растёт или стоит на месте. Причина не в качестве, а в изменении структуры (mix-shift): доли сегментов сдвинулись.

Классический пример. Конверсия в покупку:

СегментПрошлый месяцЭтот месяцДинамика сегмента
Organic трафик8% (10 000 чел)9% (4 000 чел)растёт
Paid трафик3% (2 000 чел)3.5% (12 000 чел)растёт
Итого7.2%4.9%падает

Конверсия выросла в обоих каналах, но общая упала с 7.2% до 4.9%. Почему? Доля дешёвого paid-трафика с низкой конверсией выросла с 17% до 75%. Метрика «упала» из-за притока низкоконверсионного сегмента, а не из-за ухудшения продукта.

SQL, который вскрывает mix-shift — конверсия и доля каждого сегмента:

SELECT
    source,
    COUNT(*)                                  AS users,
    SUM(converted)                            AS buyers,
    ROUND(100.0 * SUM(converted) / COUNT(*), 1) AS conv_pct,
    ROUND(100.0 * COUNT(*)
        / SUM(COUNT(*)) OVER (), 1)           AS share_pct
FROM sessions
WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE)
GROUP BY source
ORDER BY users DESC;

Сравните share_pct с прошлым периодом. Если доли резко сдвинулись — это Симпсон, и «падение» агрегата вводит в заблуждение. Вывод для интервьюера звучит сильно: «общая конверсия упала из-за смены структуры трафика, продуктовая конверсия в сегментах не ухудшилась». Подобные mix-shift кейсы разобраны в разделе кейсы.

Какие внешние факторы проверить в последнюю очередь?

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

Чеклист внешних причин:

Главное правило этого шага: сопоставляйте дату начала падения с таймлайном событий. Если падение началось 14-го числа, а релиз выкатили 14-го — это не совпадение, проверяйте релиз первым. Откат релиза и повторный замер метрики — самый быстрый способ подтвердить гипотезу.

Как собрать фреймворк в один ответ на собесе?

На кейсе «метрика упала» произнесите вслух структуру, прежде чем считать. Это и есть сигнал зрелости. Скелет ответа:

Шпаргалка-вывод, какой инструмент решает шаг:

ШагИнструмент аналитика
Целостность данныхSQL: события по дням, дубли
СегментацияSQL: GROUP BY + оконные функции
СезонностьSQL: срез по дню недели, скользящее среднее
Парадокс СимпсонаSQL: доля сегмента через SUM() OVER ()
Внешние факторыChangelog, таблица релизов, маркетинг-дашборд

Этот фреймворк универсален: подставьте вместо DAU выручку, конверсию, retention или средний чек — последовательность шагов не меняется.

Что запомнить

Потренируйся бесплатно: разбери продуктовые кейсы с падением метрик, прогони SQL-срезы из этого поста в SQL-тренажёре и отработай защиту фреймворка вслух в AI мок-интервью. Если идёшь на собес — пройди тестовые задания и курс SQL с нуля, чтобы срезы по сегментам писались на автомате.

Тренируй продуктовые кейсы
Реальные кейсы с разбором + AI-оценка твоего плана решения. Как на собесе и как на работе.
Открыть кейсы →