"А во Flurry пользователей больше!"... Пожалуй, каждый проект сталкивался с отличающимися значениями метрик в разных платформах аналитики. А что, если эти метрики являются для нас ключевыми? По каким отчетам ориентироваться, принимая решение?
- Поделимся опытом AppMetrica — за полтора года разработки собственной системы аналитики мы прошли все стадии принятия неизбежного.
- Расскажем про отличия в расчетах разных платформ аналитики и чем они обусловлены.
- Поделимся опытом сотрудничества с продуктовыми командами разных Яндекс.Приложений, благодаря которым мы выработали собственный подход к расчету основных метрик и можем сказать, что такое "сессия" и кто такой "пользователь".
- Разберем сценарии, когда ни один из готовых подходов не подходит.
Deep Dive в онтологию систем мобильной аналитики — как сделать свою и начать ей доверять.
14. Расхождение в Active Users
117,500
125,000
132,500
140,000
147,500
155,000
07 мар 08 мар 09 мар 10 мар 11 мар 12 мар 13 мар
AppMetrica Flurry
15. Расхождение в Active Users
Dimension AppMetrica Flurry Diff
07 мар 115,221 114,494 -0.63%
08 мар 123,848 127,870 3.25%
09 мар 147,606 149,915 1.56%
10 мар 149,263 146,349 -1.95%
11 мар 134,026 127,214 -5.08%
12 мар 119,622 115,269 -3.64%
13 мар 126,212 128,931 2.15%
16. Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
17. Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
прогнозирование
18. Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
прогнозирование
другие агрегатные метрики - например, retention
19. Расхождение в retention W2
43%
51%
59%
67%
75%
6-Apr 20-Apr 4-May 18-May 1-Jun 15-Jun
MAT Flurry AppMetrica
20. Разлет значений - 10-20%
Действительно плохо - совсем разные тренды
Расхождение в retention W2
Очевидно, что разница - в исходных данных
21. Как определена метрика Active Users?
Active Users
An active user is defined as a user that has had at least one
session with your application during a given time period (days,
weeks, months)…
Yahoo Developer Network
https://developer.yahoo.com/flurry/docs/overview/
23. Расхождение в Sessions
Dimension AppMetrica Flurry Diff AU Diff
07 мар 591,413 601,259 1.66% -0.63%
08 мар 626,159 666,287 6.41% 3.25%
09 мар 766,076 785,369 2.52% 1.56%
10 мар 782,661 778,891 -0.48% -1.95%
11 мар 689,813 654,401 -5.13% -5.08%
12 мар 589,589 576,078 -2.29% -3.64%
13 мар 662,192 690,016 4.20% 2.15%
24. Число и продолжительность сессии - хорошие метрики для
оценки вовлеченности пользователей.
Расхождение в Sessions
25. Число и продолжительность сессии - хорошие метрики для
оценки вовлеченности пользователей.
Расхождение в Sessions
Нужно понять причину расхождения
26. Число и продолжительность сессии - хорошие метрики для
оценки вовлеченности пользователей.
Расхождение в Sessions
Почему при большем числе сессий одна система рассчитывает
меньшее количество пользователей?
Нужно понять причину расхождения
27. Число и продолжительность сессии - хорошие метрики для
оценки вовлеченности пользователей.
Расхождение в Sessions
Почему при большем числе сессий одна система рассчитывает
меньшее количество пользователей?
Нужно понять причину расхождения
Очевидно, сессии генерируются разными
множествами устройств
28. Как определена метрика Sessions?
Sessions
A session is one use of the application by an end user. This
typically begins when the application is launched and ends when
the application is terminated. Depending on the platform, the
Flurry SDK may allow you to specify when a session starts and
stops, in which case the definition can vary depending on your
implementation.
Yahoo Developer Network
https://developer.yahoo.com/flurry/docs/overview/
29. Insight #1 - трекинг сессий
Сессия привязана к жизненному циклу приложения - вызов
методов вручную или автотрекинг
onStart()/onStop()
31. Insight #1 - трекинг сессий
Сессия привязана к жизненному циклу приложения - вызов
методов вручную или автотрекинг
Конфигурируемый таймаут сессии - решайте сами
onStart()/onStop()
setSessionTimeout(60)
32. Пользователи без сессии
Приложение Yandex.Disk. Синхронизация файлов в бэкграунде
AppMetrica SDK
t
Events
File Sync Successful Folder Sync Failed Photo Sync Successful
33. Пользователи без сессии
В отчете События хотим увидеть % пользователей с
успешными/неуспешными синхронизациями.
Event Name Users, % Events
File Sync Successful 95% 1,789,687
Folder Sync Failed 5% 1,432
Photo Sync Successful 99% 1,809,888
34. Insight #2 - метрика Devices
Device - уникальным образом идентифицированный
отправитель событий
Если есть хотя бы одно событие - есть и device
35. Device - уникальным образом идентифицированный
отправитель событий. Если есть хотя бы одно событие - есть и
device
Insight #2 - итого
36. Device - уникальным образом идентифицированный
отправитель событий. Если есть хотя бы одно событие - есть и
device
Session - сеанс использования приложения, определенный
реализацией разработчика или автотрекингом
Insight #2 - итого
37. Device - уникальным образом идентифицированный
отправитель событий. Если есть хотя бы одно событие - есть и
device
Session - сеанс использования приложения, определенный
реализацией разработчика или автотрекингом
Active User - это device, имеющий за требуемый период хотя
бы одну сессию
Insight #2 - итого
N.B. - у приложения Я.Диск различие Users и Devices - в 3 раза
38. Выбираем метрику в зависимости от бизнес-логики отчета!
Dimension Users Devices
Insight #2 - итого
39. Ничего не помогает
onStart()
Пользовательская
сессия in progress
onStop()
Прослушивание в
фоне
Анализируем поведение:
Приложение Yandex.Music
пока идет воспроизведение - считаем
пользовательскую сессию
по событиям (pause/play…)
40. Как это работает сейчас
Приложение Yandex.Music. Воспроизведение в фоне
AppMetrica SDK
t
Events
Play Pause
START
Уходим в bg
START
SessionID = 1 SessionID = 2
Push ReceivedSwitch track
41. Как это можно решить - hit-based подход
Никто не знает контекста лучше вашего прикладного кода.
42. Как это можно решить - hit-based подход
Разделим все события на 2 типа:
USER INTERACTION
Событие, связанное с пользовательской
активностью
Метрика Active Users считается не по
сессиям, а по событиям данного типа
Никто не знает контекста лучше вашего прикладного кода.
43. USER INTERACTION BACKGROUND ACTIVITY
Событие, связанное с пользовательской
активностью
Метрика Active Users считается не по
сессиям, а по событиям данного типа
Событие, связанное с бэкграундной
активностью самого приложения
Разделим все события на 2 типа:
Никто не знает контекста лучше вашего прикладного кода.
Как это можно решить - hit-based подход
45. Откажемся от общего понятия Session
Как это можно решить - hit-based подход
Предоставим возможность самостоятельно определять начало и
конец сессии
SDK только проверяет консистентность начал и концов
46. Откажемся от общего понятия Session
Как это можно решить - hit-based подход
Предоставим возможность самостоятельно определять начало и
конец сессии
SDK только проверяет консистентность начал и концов
Сессии получают текстовые метки
“Сессия UI-взаимодействия”, “Сессия прослушивания”, etc.
48. Используем в отчетах метрики по новым, промеченным сессиям
Dimension Users Devices Music Play
Проверим
49. Как сделать?
AppMetrica позволяет в добавить любой JSON-payload в событие.
Используем их для разметки событий и трекинга промеченных сессий.
Map<String, Object> eventAttributes = new HashMap<String, Object> ();
eventAttributes.put("EventType", “USER_INTERACTION");
…
YandexMetrica.reportEvent("Play", eventAttributes);
50. Как сделать?
In-house analytics
Для построения отчета необходимо получить сырые данные и выполнить
агрегацию самостоятельно
Logs API
Выгрузка большой
плоской таблицы
Агрегация
Pandas + Highcharts
Excel
51. Важно понимать методологию расчета метрик, которыми вы
пользуетесь
Мораль
Расчет собственных метрик на hit’ах - next-level
Исследуйте, как работает ваша платформа аналитики
Centimeters