Стриминг данных из Google Analytics в BigQuery
Всем привет!
Меня зовут Евгений Черный (in). Я занимаюсь Digital-аналитикой в eScore technologies.
И сегодня хочу рассказать вам об эксперименте по "складыванию" данных веб-аналитики к себе в базу.
Для чего и кому это может понадобиться?
1. В первую очередь это нужно в том случаи, когда вы часто при анализе данных в Google Analytics видите такое сообщение
Это значит, что Google анализирует не все данные, а только небольшую выборку (которая может в некоторых случаях составлять не более 1% от всех данных). Основываться на таких данных при анализе — нельзя.

2. Второй явный случай — это когда вы превышаете какие-либо лимиты Google Analytics по сбору данных, а их у Google Analytics достаточно много (https://developers.google.com/analytics/devguides/collection/ios/v3/limits-quotas?hl=ru#overview).

3. Третий, как-раз мой случай — когда аналитика проводится в стороннем инструменте, например QlikView, Tableau, Adobe Analytics, Microsoft Power BI и т.д.

Сама идея проста. Необходимо те же данные, которые отправляются в Google Analytics, складывать к себе в базу, к которой в любой момент времени можно получить неограниченный доступ. По факту это должна быть простая таблица в которой в столбцах — параметры визита (временная метка, источник, разрешение, версия браузера, категория события и т.д.), а в строках — "хиты" (событие, просмотр, транзакция и т.п.).

После некоторого изучения информации в интернете, проб и ошибок — родился первый тестовый, но работоспособный вариант. Который мы и рассмотрим.
Методика следующая:
Для приема, обработки и «складирования» данных используется Google Cloud Platform (https://cloud.google.com/) . Это платный сервис, однако для ознакомления с мощностями и функционалом Google предоставляет пробный период (60 дней использования или 300 уловных потраченных долларов по биллингу), чем мы и воспользуемся.
При регистрации нужно будет указать реальную банковскую карту, но Google утверждает, что по окончании пробного периода, без вашего дальнейшего на то согласия не будет снимать с карты реальные деньги. Данная мера больше нужна для того, чтоб предотвратить многократное использование пробной версии одним человеком под разными пользовательскими данными.
Итак, после регистрации у нас появляются облачные вычислительные мощности.
Теперь, нужен "софт" который будет всем управлять. И он тоже нашелся в открытом доступе.

За основу было взято готовое решение по стримингу на питоне от Александра Ерошкина (https://github.com/lnklnklnk).
Огромное спасибо Александру за ответы на «глупые» вопросы и вообще, что свободно делится своими наработками с людьми.

Для адаптации данного решения к работе через Google Tag Manager была использована информация из справки уважаемых лидеров в BI — OWOX (https://support.owox.com/hc/ru/categories/202600208-Streaming).
Все необходимые инструменты есть!
В итоге получается следующая последовательность действий:
1. Заполняем заявку на пробную версию Google Cloud Platform.

2. Скачиваем архив с проектом на питоне с GitHub (https://github.com/lnklnklnk/ga-bq).
3. Качаем и устанавливаем с настройками по умолчанию Python 2.7 (https://www.python.org/downloads/).
4. Аналогично скачиваем и устанавливаем Google App Engine SDK for Python (https://cloud.google.com/appengine/downloads).
5. В Google Cloud Console создаем новый проект (https://console.cloud.google.com/project).
6. У себя на ПК распаковываем ранее скачанный с GitHub архив в папку с названием аналогичным Project ID.
7. В файле app.yaml в распакованном проекте, в поле «application» также указываем Project ID.
8. В файле js/gabq.js подставляем в переменную gifPath всё тот же Project ID.
9. В https://console.cloud.google.com/apis/credentials авторизационные данные для доступа к облаку через Google API.



10. В https://bigquery.cloud.google.com/welcome/ создаем новый Dataset.
11. В файле bqloader.py подставляем app_id (Project ID), dataset_id (имя созданного датасета) и table_id (можно оставить как есть или назвать по своему).
12. Запускаем установленный в п. 4 Google App Engine Launcher, создаем новое приложение и указываем путь к папке с проектом.
13. Нажимаем Deploy, указываем доступы и отправляем проект в облако.
14. Чтобы в BigQuery создалась таблица, необходимо перейти по ссылке [Project ID].appspot.com/tasks/create_bq_table. На пустой странице будет надпись, что таблица успешно создана.
15. Для отслеживания через стандартный код GA необходимо после кода GA добавить строчку
<script src="http://[your-app].appspot.com/js/gabq.js" async=""></script>
и строчку ga('require', 'gabqplugin') после ga('create',..).
А для отслеживания через GTM воспользоваться инструкцией https://support.owox.com/hc/ru/categories/202600208-Streaming, адаптировав отслеживание под себя (указать свои UA, name и b.domain).
16. Все уходящие в GA хиты будут клонироваться и отправляться также в Google Cloud, где Google App Engine будет их обрабатывать и складывать в таблицу BigQuery.

Первые данные в таблице BigQuery появятся не сразу, а с задержкой от пары минут до часа..
Для проверки можно воспользоваться WASP или Tag Assistant от Google.
В итоге получается вот такая таблица с информацией о каждом отслеживаемом действии каждого пользователя на сайте.
Какие же основные преимущества имеем в итоге:
1. Возможность делать точные аналитические выводы, основываясь на 100% имеющихся данных (даже если анализируются миллиарды записей).

2. Возможность анализировать данные в любых разрезах и сегментах.

3. Возможность отслеживать историю взаимодействия посетителя с сайтом за неограниченный период (в Google Analytics максимум — 90 дней).

4. Собираемые данные принадлежат вам и не будут удалены по сроку давности.

На текущий момент мы тестируем данное решение по нагрузке и полноте передаваемой информации.
Этот способ пока имеет больше академическую пользу. Однако теперь есть возможность для экспериментов и оптимизации.

Буду периодически писать информацию о «набитых шишках» и новых открытиях.
Еще раз огромное спасибо Александру Ерошкину за инструмент и консультации!!!

Made on
Tilda