Для метрики удержания вы определяете множество A — уникальные пользователи, активные в неделю 1, и множество B — уникальные пользователи, активные в неделю 2. Какое множество соответствует вернувшимся пользователям?
Объединение, пересечение, разность множеств, DISTINCT, дедупликация — базовые операции при работе с данными. На собеседовании просят найти пользователей, которые есть в одной таблице, но отсутствуют в другой, или объяснить, почему UNION и UNION ALL дают разные результаты. Ошибки в дедупликации ведут к двойному подсчёту метрик.
Всего в этом разделе 20 вопросов. Каждый — с правильным ответом и кратким разбором теории. Разбито на 4 части по 5 вопросов.
1В таблице `orders` каждая строка — один заказ (событие), а один `user_id` может сделать несколько заказов. Вы хотите посчитать число покупателей как уникальных пользователей. Какой счётчик соответствует задаче дедупликации покупателей?
A`COUNT(*)` по таблице `orders`: даёт общее число записей и растёт при повторных покупках одних и тех же пользователей
B`COUNT(DISTINCT order_id)`: возвращает число уникальных заказов как событий и завышает ответ при нескольких покупках на пользователя
C`COUNT(DISTINCT user_id)`: возвращает число уникальных пользователей, совершивших хотя бы один заказ, что соответствует числу покупателей
D`SUM(order_amount)`: возвращает общую выручку по таблице заказов и для подсчёта покупателей применить нельзя
Ответ: Для подсчёта покупателей как уникальных пользователей нужна дедупликация по `user_id`, а не по событиям-заказам.
Счётчик `COUNT(*)` или `COUNT(DISTINCT order_id)` показывает количество заказов, то есть событий, и растёт, если один пользователь покупает много раз. Для аудитории покупателей нужно считать уникальные `user_id`, то есть размер множества покупателей. Эта проверка здравого смысла помогает не перепутать метрики объёма продаж и охвата уникальных пользователей.
2В таблице событий за день записано 2 млн строк, а в отчёте по аудитории видно 1.2 млн уникальных пользователей. Какое объяснение наиболее вероятно?
AОдин и тот же `user_id` генерирует много событий: записей событий обычно больше, чем уникальных пользователей за период
BПосле удаления дубликатов количество событий должно стать равным числу уникальных пользователей за тот же период
CУникальные пользователи считаются как пересечение двух множеств: их число оказывается меньше числа событий по определению
DУникальные пользователи это объединение всех событий: разница между этими числами быть не должна
Ответ: Число событий и число уникальных пользователей измеряют разные единицы и не обязаны совпадать между собой.
В таблице событий один `user_id` может встречаться много раз, поэтому счётчик строк растёт быстрее, чем счётчик пользователей. Метрика уникальных пользователей делает удаление дубликатов по `user_id` и считает каждого один раз за период. Такая проверка здравого смысла помогает не перепутать объём событий с размером аудитории.
3Для метрики удержания вы определяете множество A — уникальные пользователи, активные в неделю 1, и множество B — уникальные пользователи, активные в неделю 2. Какое множество соответствует вернувшимся пользователям?
AОбъединение множеств A и B: уникальные пользователи, активные хотя бы в одну из двух недель
BПересечение множеств A и B: уникальные пользователи, активные в обе недели одновременно
CМножество A без пересечения с B: пользователи, активные только в неделю 1 и не вернувшиеся
DМножество B без пересечения с A: пользователи, активные только в неделю 2 как новички недели
Ответ: Вернувшиеся пользователи — это пересечение множеств активных в разные периоды.
Вернувшимися считают пользователей, которые были активны в обоих периодах — это пересечение множеств A и B. Объединение даёт всех, кто был активен хотя бы раз, и не отражает возвращаемость. Разности множеств описывают тех, кто пришёл только в одну из недель, и тоже не подходят для удержания. Корректная работа с пересечением помогает строить когортные отчёты и избегать ошибок в дедупликации.
4В канале «поиск» 400 тыс уникальных пользователей, в канале «соцсети» 300 тыс, а пересечение между ними 100 тыс. Сколько уникальных пользователей в объединении этих двух множеств?
A700 тыс
B600 тыс
C500 тыс
D300 тыс
Ответ: Для двух множеств размер объединения равен сумме размеров минус пересечение по принципу включения-исключения.
Если просто сложить два канала, пересечение будет посчитано дважды. Поэтому используйте принцип включения-исключения: размер объединения равен сумме размеров минус размер пересечения. Это базовый приём для оценки уникальных пользователей по нескольким каналам привлечения.
5В отчёте уникальные пользователи по каналам: email 200 тыс, push 150 тыс, sms 50 тыс. Сумма по строкам — 400 тыс, а общий итог по всем каналам — 260 тыс уникальных пользователей. Что это чаще всего означает?
AВ итоговой строке ошибка: общий итог обязан быть равен сумме по каналам, иначе данные собраны неверно или разрезы построены некорректно
BОдин и тот же пользователь попадает в несколько каналов, поэтому сумма по строкам двойно считает пересечения, а итог делает дедупликацию по уникальным пользователям
CВ отчёте перепутан знаменатель: нужно делить сумму по каналам на их количество, чтобы получить корректное среднее число уникальных пользователей
DПересечений между каналами нет, поэтому итог обязан быть строго больше суммы по строкам, и при равенстве данные собраны с ошибкой
Ответ: Суммирование по каналам обычно двойно считает пересечения, а общий итог считает объединение после дедупликации.
Один и тот же `user_id` мог попасть сразу в несколько каналов, поэтому он окажется в нескольких строках. Общая строка обычно строится как объединение по всем каналам и делает дедупликацию на уровне уникальных пользователей. Поэтому несхождение суммы и итога — нормальный сигнал наличия пересечений, а не баг. Версия с обязательным равенством или с делением суммы на число каналов опирается на ошибочное представление о пересечениях.