1. Сначала уточните вопрос
«Люди возвращаются?» — слишком широкий вопрос. Повторное открытие сайта вечером, визит через неделю и вторая покупка описывают разное поведение. Нельзя смешивать их в одном показателе.
Для нашего учебного расчёта выберем правило: среди идентификаторов, впервые замеченных в выбранной истории, найдём тех, у кого был хотя бы один визит со следующего по седьмой календарный день после первого наблюдаемого визита. День первого визита — день 0. Часовой пояс одинаков для всей таблицы.
Это возврат в течение дней 1–7, а не возврат строго на седьмой день. Два визита в день 0 не считаются возвратом по нашему правилу. Мы измеряем посещение сайта, а не повторное получение пользы или покупку.
2. Когда нужна выгрузка Logs API
Logs API позволяет получить неагрегированные данные Метрики. Это полезно, если нужно самостоятельно задать периоды возврата, проверить отдельные записи или объединить результаты с другими данными. Путь выгрузки: запросить нужный период и поля, дождаться обработки, скачать все части и собрать единую таблицу.
Для начала достаточно данных уровня визитов:
| Поле | Зачем нужно |
|---|---|
ym:s:counterID | Отделить данные разных счётчиков |
ym:s:visitID | Различать визиты; идентификатор уникален в рамках года |
ym:s:clientID | Объединять визиты по анонимному идентификатору браузера |
ym:s:dateTime | Определить дату визита в часовом поясе счётчика |
Сохраняйте идентификаторы как строки или точные целые числа. Преобразование длинного clientID в число с плавающей точкой может потерять точность и испортить объединение записей.
На этом этапе нужна таблица визитов. Если присоединить к каждому визиту несколько строк товаров, число строк вырастет. Поэтому сначала зафиксируйте, что означает одна строка, и только затем считайте пользователей.
3. Считайте по шагам
- Проверьте полноту выгрузки. Задайте последнюю полностью доступную дату, а не просто сегодняшнее число.
- Уберите повторно загруженные записи. Для нескольких лет и счётчиков учитывайте счётчик, год и идентификатор визита; конфликтующие записи разберите отдельно.
- Для каждого clientID найдите первую дату в доступной истории. При нескольких счётчиках не объединяйте их автоматически.
- Оставьте в расчёте только тех, у кого полностью прошли дни 1–7.
- Найдите визиты в этом интервале. Каждый идентификатор включите в число вернувшихся только один раз.
- Разделите число вернувшихся на число идентификаторов с полным периодом наблюдения.
Предположим, данные полны по 8 октября включительно. Идентификатор с первой датой 1 октября уже можно оценивать: его дни 1–7 — это 2–8 октября. Для первой даты 2 октября период заканчивается 9 октября, поэтому оценка пока преждевременна.
| Идентификаторы с полным окном | 1 843 |
|---|---|
| Из них вернулись в дни 1–7 | 317 |
| Доля вернувшихся | 317 ÷ 1 843 × 100% ≈ 17,20% |
Один человек может зайти несколько раз. Числитель от этого не должен увеличиваться повторно: здесь считаются идентификаторы с возвратом, а не визиты.
4. Что легко упустить
Первый в таблице — не обязательно новый
Если история начинается в сентябре, вы не видите августовские визиты. Нельзя называть всех впервые замеченных в сентябрьской выгрузке новыми клиентами. Либо расширьте историю и согласуйте правило определения новичка, либо честно называйте показатель возвратом после первого наблюдаемого визита.
Браузер — не человек
В этом расчёте единицей является clientID. Один человек с разных устройств может выглядеть как несколько идентификаторов. Сброс cookie также меняет наблюдаемую историю. Поэтому не называйте результат точным числом физических людей.
Свежие группы всегда в неравных условиях
Если сравнить группу, пришедшую неделю назад, с группой, пришедшей вчера, у второй было меньше времени вернуться. Неполный период нельзя автоматически записывать как отсутствие возврата.
Общий показатель зависит от состава аудитории
Могла вырасти доля посетителей, которым сайт нужен для разовой задачи. Общая возвращаемость снизится, даже если внутри сопоставимых групп ничего не ухудшилось. Разбейте результат по источникам и устройствам, но проверяйте размер каждой группы.
Возврат не объясняет мотив
Посетитель мог вернуться за полезным материалом, а мог пытаться исправить неудачную оплату. Для оценки продукта полезно дополнительно посмотреть, какое действие совершено после возврата.
5. Проверьте границы вручную
| Ситуация | Ожидаемый результат |
|---|---|
| Повторный визит в день 0 | Не считается возвратом |
| Визит на следующий календарный день | Считается, если окно наблюдения полное |
| Визит в день 7 | Включается |
| Единственный повторный визит в день 8 | Не включается |
| Несколько визитов в дни 1–7 | Один вернувшийся идентификатор |
| После первой даты прошли только три дня | Исключается и из числителя, и из знаменателя |
Отдельно проверьте визиты около полуночи. Календарный день и интервал в 24 часа — разные правила. Не меняйте их между группами.
При сверке с интерфейсом Метрики сопоставьте определения, фильтры, период и способ подсчёта посетителей. Пользовательский расчёт по clientID не обязан совпадать с любым готовым отчётом.
Как сформулировать вывод
«В учебной выборке 317 из 1 843 идентификаторов с полным периодом наблюдения вернулись в дни 1–7 после первого наблюдаемого визита. Это 17,20%. Для оценки изменений продукта нужно сравнить сопоставимые группы и действия после возврата».
Такая формулировка объясняет, что посчитано, и оставляет место для дальнейшего исследования.
Разобрать падение retentionПродолжить изучение
От отдельной выгрузки — к регулярной работе с данными.
Когда отчётов Метрики уже недостаточно