3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Сбор и обновление данных User ID, userEmail и userPhone

В таблицах с данными о сессиях идентификаторы пользователей хранятся в поле user.Id . OWOX BI отправляет данные для этого поля стандартным способом — в параметре &uid .

Обратите внимание:Если в вашем потоке Google Analytics → Google BigQuery включен устаревший алгоритм сбора данных о сессиях на основе Google Analytics Core API, то данные о User ID передаются в специальном параметре (custom dimension) &cd уровня «Пользователь».
Также учтите, что если значения передаются одновременно как в &uid , так и в &cd, то в поле user.Id попадет только значение из параметра &cd .

Внутренняя аналитика мобильных приложений или зачем нужны ивенты

Аналитика мобильных приложений обычно строится на ивентах. Вы шлете в систему аналитики ивенты (события), а система предоставляет интерфейс для работы с этими данными.

Ивент – любое действие, которое совершает пользователь (клик на кнопку, открытие определенного экрана, добавление комментария, трата или покупка внутренней валюты). Когда происходит это событие, то приложение отправляет ивент на сервера системы аналитики. Вместе с ивентами обычно передаются ряд обязательных параметров (индификатор пользователя, версия приложения, модель девайса, прочие служебные параметры), а также ряд дополнительных кастомных параметров, которые вы определяете сами (например, количество дней с момента начала использования приложения, кол-во запусков приложения и тд).

По сравнению с стандартными для веба системами аналитики (Яндекс Метрика или Google Analytics) описанный подход оказывается более затратным на этапе встраивания и настройки системы аналитики, но зато позволяет отвечать на существенно большее количество вопросов.

Унификация сессий

Не всегда есть возможность присвоить пользователям User-ID. В результате для некоторых взаимодействий и сессий будут определены пользовательские User-ID, а для других — автоматически сгенерированные.

В Google Analytics этот вопрос решается механизмом унификации сессий. Когда механизм активен, он будет группировать взаимодействия для автоматических и пользовательских User-ID. Google Analytics присвоит пользовательский User-ID произошедшим ранее в той же сессии взаимодействиям. Во время этой сессии User-ID должен присваиваться первый раз. Таким образом, Google Analytics не будет объединять все предыдущие сессии пользователя. Как же унификация сессий в таком случае влияет на данные? Для этого нужно разобраться с представлениями для User-ID и специальными отчетами.

Не делайте файлы слишком большими

Знаю, что вы скажете: «Дисковая память стоит дешево. За десять центов я куплю еще один терабайт». Это верно. Вы действительно можете создавать гигабайтные XML-файлы. Но программирование – это постоянные компромиссы. Приходится менять дисковое пространство на время или память на время. А при работе с огромным XML-файлом вы получаете худшие стороны и того, и другого. Файл занимает много места на диске, а на его анализ и проверку уходит много времени. Кроме того, большой файл исключает использование DOM-анализатора, поскольку построение дерева требует бесконечного времени и огромного количества памяти.

Какова же альтернатива? Можно создать несколько файлов. Один выступает в качестве индекса, а другие содержат большие ресурсы, которые, возможно, будут нужны не всем пользователям этого XML. Другой вариант– вынос всех больших фрагментов CDATA из XML-файла и помещение их в свои собственные файлы с собственными форматами. Если вы хотите хранить все данные вместе, запакуйте все файлы в новый файл с новым расширением. Любой популярный язык программирования имеет модули, облегчающие быструю упаковку и распаковку файлов.

Читать еще:  Как на «Мотиве» подключить интернет: пошаговая инструкция по настройкам

Цели в веб-аналитике: как настроить и посчитать конверсию

Какими могут быть цели сайта:

  • на лэндинг пейдже продукта или услуги — заполнение формы заявки, просмотр контактов, общение с онлайн-консультантом;
  • на личном или корпоративном сайте — подписка на рассылку, переход на страницы в социальных сетях;
  • в интернет-магазине — оплата товара или предзаказ, посещение страницы с условиями доставки.

Какие есть цели в Метрике и Аналитиксе:

  • Количество просмотров
  • Посещение страниц
  • Событие
  • Составная цель

Количество просмотров страниц на сайте — самая простая цель в веб-аналитике. Она подходит для:

  • информационных ресурсов с большим количеством информации, где важно понимать, читают ли посетители другие статьи по теме;
  • коммерческих сайтов, ведущих блоги для привлечения тематического трафика.

Посещение страниц — одна из самых важных целей в веб-аналитике. При настройке мы можем указать адрес страницы, посещение которой считаем достижением цели (обычно это страница благодарности за заказ/покупку/скачивание). Это полезно:

  • интернет-магазинам — можно узнать, те ли разделы сайта просматривают посетители и куда заходят чаще, интересуются ли они условиями заказа и доставки;
  • сайтам услуг — выясняется, просматривают ли посетители раздел контактов, какая из услуг наиболее популярна, заказывают ли звонок.

Цель-событие помогает отследить взаимодействие посетителя с любыми элементами на сайте. Например, нажатие кнопки «Заказать» или успешная отправка данных через форму, переходы по кнопкам соцсетей на сайте или выбор в чеклисте определённой характеристики товара.

Составные цели нужны для отслеживания конверсии. Выстроив цепочку целевых страниц, которые пользователь должен посетить, мы можем выявить этап, на котором он уходит с сайта без покупки/заказа и проработать его.

Если на вашей странице есть форма приёма данных, когда пользователь нажмёт кнопку «Отправить», Тильда отправит в Гугл Аналитикс и Яндекс. Метрику информацию о том, что форма была заполнена. Чтобы увидеть эти данные в счётчиках аналитики, нужно создать цель. Это просто: нужно иметь права администратора счётчиков и сделать всё по инструкции настройки целей в Гугл Аналитикс и Яндекс. Метрике.

Чтобы отследить открытие всплывающего окна, переход по ссылке, отправку данных на сторонний сервис после успешной отправки формы, подключение стороннего сервиса, который срабатывает при клике на кнопку, вам нужно добавить на страницу скрипт. Чтобы сделать это для сайта на Тильде, не нужно быть программистом. Читайте инструкцию, как добавить скрипты на страницу.

Обновление исторических данных

OWOX BI идентифицирует пользователей, которые заходили на ваш сайт без User ID за последние 30 дней и обновляет информацию о них в таблицах с сессионными данными за этот период. Обновление происходит, если неидентифицированный пользователь повторно заходит на сайт с тем же Client ID и авторизируется.

Как это работает:

  1. В вашей таблице с данными о сессии есть Client ID. С ним соотносится параметр user.Id со значением «null».
  2. Во время следующего визита на сайт, посетитель с этим Client ID авторизируется и получает User ID.
  3. Все значения «null» параметра user.Id , соотнесённые с этим Client ID в таблице сессий, будут переписаны и получат значение этого нового User ID.
  4. Такие обновления данных происходят ежедневно и применяются к сессионным данным в таблицах за последние 30 дней.
  5. Параметры user.Id , у которых нет значения «null» — НЕ обновляются.
Читать еще:  Как подключить клавиатуру и мышку к Android телефону или планшету

Пример:

  • Сессия 1 — clientId : 35009a79 — user.Id : NULL
  • Сессия 2 — clientId : 35009a79 — user.Id : as8knl

В первой сессии пользователь был неавторизован. Во второй сессии с тем же Client ID — авторизовался и ему был присвоен уникальный User ID «as8knl».

При следующем обновлении данных User ID «as8knl» запишется в качестве значения поля user.Id во все предыдущие сессии этого Client ID за последние 30 дней. То есть все « user.Id : NULL», присвоенные « clientId : 35009a79» получат значение «as8knl».

Ещё пример:

  • Сессия 1 — clientId : 35009a79 — user.Id : as8knl
  • Сессия 2 — clientId : 35009a79 — user.Id : rb451f

В первой сессии пользователь с Client ID «35009a79» был авторизирован и получил User ID «as8knl». Во второй сессии тот же Client ID вошёл под другой учётной записью и получил новый User ID — «rb451f».

В таком случае этот Client ID будет относиться к двум разным пользователям в двух сессиях, а значения первого user.Id — «as8knl» — не будут перезаписаны.

Обратите внимание:Если в вашем потоке включен устаревший алгоритм с бора данных о сессиях на основе Google Analytics Core API, то обновление поля user.Id происходит только при использовании пользовательского параметра &cd для сбора значений User ID. GA Core API из-за своих ограничений не может обновлять значения, которые передаются в &uid .

Используйте XML Schema

Синтаксический анализ XML является непростой задачей. Для точного анализа необходимо проделать большую работу по защите кода от возможного отсутствия и некорректного использования тегов или атрибутов. Это дополнительная работа по написанию кода, дополнительная сложность, а также затенение реальной бизнес-логики, являющейся вашей главной заботой. Как избежать этого? Проверяйте XML перед его использованием. Для этого можно использовать несколько стандартов. Можно указать Document Type Definition (DTD) или XML Schema (ссылки на информацию о DTD и XML Schema приведены в разделе Ресурсы). Лично я нахожу XML Schema намного более простой в работе, но если вы новичок в этом деле, попробуйте различные системы проверки корректности.

Большим преимуществом является то, что после проверки корректности XML в нем можно быть уверенным. Возможно, это не нужно для внутренних XML-файлов вашего приложения. Но это очень полезно, если XML генерируется другим приложением или пишется вручную.

2. Как сделать когорты на SQL?

Размер статьи и здравый смысл не позволяют приводить здесь наши реальные данные — в тестовом дампе статистика за полтора года: 1200 пользователей и 53 000 транзакций. Чтобы вы могли поиграть с этими данными, мы подготовили docker-образ с MySQL и Grafana, в котором можно пощупать все это самому. Ссылка на GitHub в конце статьи.

А здесь мы покажем создание когорт на упрощенном примере.

Предположим, что у нас есть сервис. В нем регистрируются пользователи и тратят деньги на услуги. Со временем пользователи отваливаются. Мы хотим узнать, как долго живут пользователи, и сколько из них отваливается после 1-го и 2-го месяца использования сервиса.

Для ответа на эти вопросы нам нужно построить когорты по месяцу регистрации. Активность будем мерять по расходам в каждом месяце. Вместо расходов могут быть заказы, абонентская плата или любая другая активность, привязанная ко времени.

Читать еще:  Выбор телефона до 15 тысяч рублей. ТОП 10 моделей в декабре 2019

Исходные данные

Примеры сделаны в MySQL, но для остальных СУБД существенных отличий быть не должно.

Таблица пользователей — users:

userIdRegistrationDate
12019-01-01
22019-02-01
32019-02-10
42019-03-01

Таблица расходов — billing:

userIdDateSum
12019-01-0211
12019-02-2211
22019-02-1212
32019-02-1113
32019-03-1113
42019-03-0114
42019-03-0214

Выбираем все списания пользователей и дату регистрации:

userIdDateRegistrationDate
12019-01-022019-01-02
12019-02-222019-01-02
22019-02-122019-02-01
32019-02-112019-02-10
32019-03-112019-02-10
42019-03-012019-03-01
42019-03-022019-03-01

Когорты строим по месяцам, для этого преобразуем все даты в месяцы:

Теперь нам нужно знать, сколько месяцев пользователь был активным — это разница между месяцем списания и месяцем регистрации. В MySQL есть функция PERIOD_DIFF() — разница между двумя месяцами. Добавляем PERIOD_DIFF() в запрос:

userIdBillingMonthRegistrationDateMonthsDiff
12019-012019-01
12019-022019-011
22019-022019-02
32019-022019-02
32019-032019-021
42019-032019-03
42019-032019-03

Cчитаем активированных в каждом месяце пользователей — группируем записи по BillingMonth, RegistrationMonth и MonthsDiff:

UsersCountBillingMonthRegistrationMonthMonthsDiff
12019-012019-01
12019-022019-011
22019-022019-02
12019-032019-021
12019-032019-03

В январе, феврале и марте появилось по одному новому пользователю — MonthsDiff = 0. Один пользователь января был активен и в феврале — RegistrationMonth = 2019-01, BillingMonth = 2019-02, так же и один пользователь февраля был активен в марте.

На большом массиве данных закономерности, естественно, видны лучше.

Полезные хаки при настройке аналитики в мобильном приложении

Глобальные параметры

Есть такой полезный хак — отправлять определенные параметры со всеми ивентами. Я называю такие параметры глобальными.

Глобальные параметры обычно характеризуют пользователя, а не само действие, к которому прикреплен ивент. В список глобальных параметров я почти всегда вношу следующие параметры:
1) номер недели или дня, когда пользователь пришел в игру (для последующего выделения когорт)
2) источник трафика
3) уровень игрока
4) количество покупок
5) кол-во пройденных уровней в игре

Пишите статистику как минимум в две системы аналитики

Даже при внимательной проверке статистики на этапе тестирования, все равно случаются ошибки, поэтому лучше писать данные как минимум в две системы, чтобы иметь возможность проверять их достоверность. В качестве запасной системы аналитики удобно использовать Flurry.

Проверяйте покупки на сервере перед тем, как писать их в статистику

Если вы хотите использовать вашу систему аналитики для работы с финансовыми данными, то обязательно делайте серверную валидацию платежей перед тем, как писать ивенты покупки в статистику. В противном случае читеры испортят все ваши данные.

Как хранить структуру ивентов

Для хранения и ведения структуры ивентов хорошо подходит Excel файл. Заводите новую вкладку на каждую версию приложения и отмечайте цветом ивенты, которые добавились в соответствующей версии приложения. Так вы всегда будете знать, когда и какие изменения вносились в структуру ивентов.

Как называть ивенты

Чтобы не путаться в названиях ивентов, их удобно называть по принципу ЭКРАН_ЭЛЕМЕНТ_ДЕЙСТВИЕ. Например, старт уровня будет называться LEVSCR_LEVEL_STARTED, а покупка в магазине SHOP_ITEM_PURCHASED.

Для некоторых сущностей такая структура не подходит, тогда можно вводить сквозные ивенты, которые не привязаны ни к какому экрану, а отвечают, например, за трекинг внутренней экономики. Такие ивенты можно назвать ECONOMICS_CURRENCY_SPENT и ECONOMICS_CURRENCY_GAINED, а в качестве параметров передавать method (на что потратил) и value (сколько потратил).

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector