Аналитик данных
80 задач, из них 10 на код с автопроверкой. Условие и варианты ответа открыты всем; проверка, подсказка и разбор — в клубе.
SQL для аналитики
- COUNT(*), COUNT(столбца) и COUNT(DISTINCT) на таблице с пустыми значениями
- После LEFT JOIN из отчёта пропали клиенты без заказов
- Куда поставить условие «сумма заказов клиента больше 10 000»
- SUM() OVER (PARTITION BY) против GROUP BY: сколько строк вернёт запрос
- Последний заказ на клиента: RANK при одинаковых датах
- NOT IN с подзапросом вернул ноль строк
- Индекс по created_at есть, но запрос читает всю таблицу
- После присоединения позиций заказа выручка в отчёте выросла вдвое
Продуктовые метрики и unit-экономика
- Конверсия воронки: 100 000 визитов, 8 000 корзин, 2 000 заказов
- Промо удвоило число платящих: что стало с ARPU и ARPPU
- Канал привлёк 100 клиентов за 300 000 ₽: окупается ли он
- Средний чек вырос на 10%, а выручка упала на 12%
- Конверсия выросла в каждом канале, а общая упала
- Отток вырос с 5% до 10% в месяц: что стало с LTV подписчика
- LTV майской когорты вдвое ниже январской — продукт ухудшился?
- У брендового поиска CAC 300 ₽ — переливать ли туда бюджет
Python, витрины и качество данных
- Пропуски в столбце: что вернут mean, count и len
- После merge заказов с пользователями строк стало меньше
- Сумма по столбцу из CSV дала строку вместо числа
- SettingWithCopyWarning при пересчёте суммы по срезу
- drop_duplicates отработал, а дубли событий остались
- Дневная выручка в витрине не сходится с источником, а месячная сходится
- После перезапуска DAG за прошлую дату строки в витрине задвоились
- Дашборд открывается 40 секунд: с чего начинать ускорение
A/B-тесты и статистика
- В A/B-тесте получили p-value 0,03: как сформулировать это заказчику
- Метрика выросла на 8% после раскатки на всех: можно ли засчитать эффект
- Тест на 2 000 пользователей в группе не показал значимости
- Аналитик проверяет тест каждый день и останавливает его при p < 0,05
- Из 20 метрик эксперимента значимой оказалась одна второстепенная
- Сплит задан 50/50, а в группах 501 800 и 498 200 пользователей
- CTR считаем по показам, а трафик делим по пользователям
- CUPED сократил сроки тестов, но на новых пользователях не дал ничего
Когорты, удержание и сегментация
- Две команды считают удержание седьмого дня и получают 12% и 31%
- Как собрать когорты, чтобы оценить новый онбординг для покупателей
- Отток подписчиков за месяц получился отрицательным
- Размеры месячных когорт по дате регистрации
- У включивших уведомления удержание втрое выше — стоит ли навязывать уведомления всем
- В когортной таблице удержание последней когорты выглядит обвалом
- Пороги RFM-сегментов, подобранные год назад, отправили 70% базы в «чемпионы»
- Удержание N-го дня по дате регистрации и активности
- Присвоение клиенту сегмента по давности, частоте и сумме
- Средний клиент делает 14 покупок в год — вывод по выборке активных клиентов
- Декабрьская когорта удерживается лучше, и команда записала это на счёт нового онбординга
- Когортный треугольник удержания без незрелых ячеек
Python: расчёт метрик на сырых данных
- itertools.groupby выдал по два раза одни и те же города
- Фильтр «заказы после 1 октября» пропустил сентябрьские заказы
- Конверсия шагов воронки от предыдущего шага
- DAU по сырым событиям
- Выручка в отчёте на копейку расходится с бухгалтерией
- Средний чек 4 500 ₽, а у 80% заказов чек меньше 2 000 ₽
- Ночные заказы попадают в отчёт за предыдущий день
- Число сессий пользователя по времени событий
- Скользящее среднее выручки для сглаживания графика
- Доли каналов привлечения в отчёте в сумме дают 101%
- Целые проценты по каналам, дающие в сумме ровно 100
- Атрибуция заказов по последнему касанию
BI-дашборды и визуализация
- Доли выручки 14 категорий товаров показаны круговой диаграммой
- Столбец конверсии «после» выглядит вдвое выше, хотя выросла она с 4,1% до 4,3%
- На дашборде для руководителя 38 графиков, и его никто не открывает
- Выручка по городам показана линией, и зрители видят «тренд»
- График с двумя осями «доказал», что реклама двигает выручку
- Конверсия за месяц в BI не совпадает с расчётом аналитика
- Выручка за сентябрь на дашборде расходится с отчётом финансов на 6%
- Каждое утро график заказов по дням показывает обвал в последней точке
- Рост и падение показателей отмечены только красным и зелёным
- Партнёрам открыли дашборд продаж, и каждый увидел выручку конкурентов
- Число активных пользователей в трёх дашбордах — 212, 184 и 247 тысяч
- Алерт «заказы упали на 30% ко вчера» срабатывает каждую субботу
ClickHouse и большие данные
- Запрос SELECT * к таблице событий в ClickHouse идёт минуту, а с двумя столбцами — секунду
- Скрипт обновляет статусы заказов в ClickHouse по одной строке и работает часами
- Фильтр по event_type в ClickHouse медленный, а по дате — быстрый
- Ноутбук с PySpark падает с нехваткой памяти на строке toPandas()
- DAU в дашборде на ClickHouse расходится с выгрузкой на 0,4%
- JOIN событий с пользователями в ClickHouse падает с превышением памяти
- Вставки в таблицу событий начали падать с ошибкой Too many parts
- Дневная выручка из ClickHouse не сходится с отчётом кассы по Москве
- Отчёт показал ноль заказов за последний час, хотя магазин работал
- В таблице ReplacingMergeTree остаются дубли заказов через час после вставки
- Запрос с SAMPLE 0.1 для быстрой оценки падает с ошибкой
- В Greenplum один сегмент загружен на 100%, остальные простаивают
