Ошибки в SQL для метрик
Вопрос
Какие типичные ошибки допускают при подсчёте продуктовых метрик в SQL?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
COUNT(*) после JOIN считает строки, а не пользователей
Целочисленное деление
INNER JOIN теряет пользователей без событий
Дни без событий выпадают из средних
Часовые пояса и границы периодов
Тестовые аккаунты и дубли событий
Что могут спросить следом
- Как вы проверяете свой запрос?
- Что такое зерно таблицы?
Разбор
Первая ошибка: соединить пользователей с заказами и считать COUNT(*), получая заказы вместо людей. Вторая: делить целые числа и получать ноль. Третья: INNER JOIN, который выкидывает пользователей без действий из знаменателя, и конверсия становится 100%. Четвёртая: средний DAU по группировке без пустых дней. Пятая: даты в UTC против местного времени и включение границ периода. Шестая: тестовые аккаунты и дубли событий. Поэтому я всегда проверяю число строк после каждого JOIN и сверяю итог с независимым отчётом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «SQL для продуктовых метрик»
- Разность дат
- Первый заказ пользователя
- FILTER в агрегатах
- Дни без событий
- Целочисленное деление
- COUNT после JOIN
- LAG
- Потерянный знаменатель