Привет. Я Витя, продуктовый аналитик в Тинькофф Страховании. Как и многие мои коллеги, я привык работать с готовыми мастер-системами, готовыми ETL-процессами, готовыми инструментами работы с данными. Всё это я уже давно воспринимаю как должное.

Однако что делать, если ты - человек с большим бэкграундом в аналитике, а перед тобой pet-project, где хочется тратить на всё 0 рублей, на проекте пару рук и ещё ничего не настроено?

В Тинькофф Страховании мы регулярно проводим кучу нетривиальных A/B тестов. В большей части тестов возникают типизируемые, но нестандартные задачи с точки зрения статистики: тесты с несбалансированными выборками, одновыборочные тесты, тесты с небинарными метриками, тесты с большим количеством сравниваемых вариаций. Для того чтобы закрыть большую часть потребностей, мы с @Ulya7разработали open-source калькулятор размера выборки ABnTester. Делали мы всё в отрыве от инфраструктуры Тинькофф, поэтому все бэки, фронты и системы анализа данных нужно выстраивать самим.

Поиск инструмента для веб-аналитики

Метрики

Когда мы довели сервис до состояния MVP, перед какими-то презентациями коллегам нашего инструмента захотелось видеть хотя бы DAU нашего сайта. А ведь само оно ниоткуда не возьмётся…

Погуглили, нашли 2 классических решения: Яндекс Метрика и Google Analytics. Недолго думая, решили выбрать первое, потому что мало ли что будет с Google в условиях постоянных санкций. В Яндекс Метрике легко создать и разместить счётчик, можно просто следовать стандартному флоу создания счётчика или посмотреть как это выглядит на видео.

На наших объёмах и для наших задач Яндекс Метрика позволяет бесплатно и относительно просто собирать большой объём информации: заходы, категоризация клиентов, достижения целей внутри сайта. Кроме того, Яндекс Метрика даёт классную визуализацию из-под коробки.

Дэшборд основных метрик в Яндекс Метрике
Дэшборд основных метрик в Яндекс Метрике

В какой-то момент я понял, что нужно серьёзно подойти к задаче и наконец-то построить дерево метрик сервиса. После этого логично возникла задача визуализации, и здесь возникли проблемы, связанные с доступным инструментарием Яндекс Метрики:

  • мало типов визуализации;

  • нет возможности построить retention;

  • нет возможности делать подробную аналитику по хитам (событиям внутри одного визита сайта).

Яндекс Метрика + DataLens

Яндекс Метрика - это прежде всего собиралка событий на сайте. Почему бы тогда не использовать другой инструмент визуализации для этих же данных?

Оказалось, что за меня уже подумали, и есть прямая интеграция Яндекс Метрики с инструментом BI-аналитики DataLens. Выглядит просто и круто! Однако если бы всё было так просто, статьи бы не было :)

Интеграция с Яндекс Метрикой - это интеграция не с сырыми данными Метрики, а с отдельными API Метрики. И с точки зрения работы с DataLens у такой интеграции очень порезанный функционал: практически никакие функции DataLens не работают с Яндекс Метрикой. Применяя это к моим хотелкам я получил только один бонус: у меня стало немного больше типов визуализаций. Однако я даже не всё мог реализовать в такой связке из того, что мог сделать в интерфейсе самой Яндекс Метрики.

Мои тщетные попытки визуализации в DataLens на данных из прямой интеграции
Мои тщетные попытки визуализации в DataLens на данных из прямой интеграции

Яндекс Метрика + Clickhouse + DataLens

Если мы посмотрим внимательно на поддержку функций DataLens при подключении к разным источникам данных, то заметим, что всё прекрасно работает с Clickhouse. Окей, а можно ли интегрировать Яндекс Метрику с Clickhouse без пота и боли? Да, и даже есть инструкция!

Кажется, работал бы я в крупной компании, это и было бы первым решением, к которому я бы пришёл. Всё-таки Clickhouse отлично работает с большими объёмами данных, это решение выглядит масштабируемым, да и всё уже готово.

Однако для моего pet-project есть пару недостатков такого решения.

А можно бесплатно и качественно, пока я не готов платить кучу денег за pet-project?

BI-аналитика на коленке

Что мы имеем на данный момент?

  • У Яндекс Метрики есть API. Отсюда можно получать сырые данные.

  • Есть какой-то опыт работы с DataLens (когда пытались что-то собрать на прямой интеграции с Яндекс Метрикой).

  • В принципе DataLens может много с чем работать.

  • Через Clickhouse и нормальные интеграции делать скорее всего не получится, и лучше искать обходные пути.

Яндекс Метрика + Github Actions + Google Sheets + DataLens

Если уж ставить цель не платить деньги за костыли, то идти до конца и не платить ни копейки :)

Схема, к которой я пришёл, выглядит следующим образом.

  1. На сайте подключен счётчик Яндекс Метрики, который на сервера Яндекса сохраняет данные.

  2. По образу и подобию выгружаем данные с помощью API Яндекс Метрики. Чтобы это всё работало по регламенту, я использую Github Actions.

  3. В рамках этого же регламента выгруженные данные регулярно перезаписывают таблицы в Google Sheets.

  4. В DataLens отчёты построены на Google Sheets таблицах, где поддерживается автообновление данных и большое количество функций DataLens.

Таким образом, мы имеем регламентное обновление данных в инструменте BI-аналитики, при этом для нас это стоит 0 рублей. Ну разве не счастье?

Текущая версия дэшборда в DataLens
Текущая версия дэшборда в DataLens

Готовое решение

Думаю, не мне одному хотелось бы видеть в этот момент готовое и оформленное решение, которое можно просто форкнуть на Github. Собственно, вот оно: TransferYandexMetricToGoogleSheets. Здесь приведены:

  • скрипт, который будет перетаскивать данные из Яндекс Метрики в Google Sheets;

  • скрипт запуска всего кода по регламенту в Github Actions;

  • подробная документация как с этим работать.

Ограничения

Заключение

В результате мини-исследования инструментов веб-аналитики мы смогли построить регулярно обновляемую веб-аналитику по pet-project. Более того, разработан готовый инструмент для построения такой аналитики. Надеюсь, он будет полезен для людей вроде меня, которым лень в код, и хочется всё готовое :)

P.S. Ну и калькулятор размера выборки ABnTester тоже можете использовать, аналитика ваших действий сделает инструмент только лучше :)

Комментарии (0)