Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет. Я Витя, продуктовый аналитик в Тинькофф Страховании. Как и многие мои коллеги, я привык работать с готовыми мастер-системами, готовыми ETL-процессами, готовыми инструментами работы с данными. Всё это я уже давно воспринимаю как должное.
Однако что делать, если ты - человек с большим бэкграундом в аналитике, а перед тобой pet-project, где хочется тратить на всё 0 рублей, на проекте пару рук и ещё ничего не настроено?
В Тинькофф Страховании мы регулярно проводим кучу нетривиальных A/B тестов. В большей части тестов возникают типизируемые, но нестандартные задачи с точки зрения статистики: тесты с несбалансированными выборками, одновыборочные тесты, тесты с небинарными метриками, тесты с большим количеством сравниваемых вариаций. Для того чтобы закрыть большую часть потребностей, мы с @Ulya7разработали open-source калькулятор размера выборки ABnTester. Делали мы всё в отрыве от инфраструктуры Тинькофф, поэтому все бэки, фронты и системы анализа данных нужно выстраивать самим.
Поиск инструмента для веб-аналитики
Метрики
Когда мы довели сервис до состояния MVP, перед какими-то презентациями коллегам нашего инструмента захотелось видеть хотя бы DAU нашего сайта. А ведь само оно ниоткуда не возьмётся…
Погуглили, нашли 2 классических решения: Яндекс Метрика и Google Analytics. Недолго думая, решили выбрать первое, потому что мало ли что будет с Google в условиях постоянных санкций. В Яндекс Метрике легко создать и разместить счётчик, можно просто следовать стандартному флоу создания счётчика или посмотреть как это выглядит на видео.
На наших объёмах и для наших задач Яндекс Метрика позволяет бесплатно и относительно просто собирать большой объём информации: заходы, категоризация клиентов, достижения целей внутри сайта. Кроме того, Яндекс Метрика даёт классную визуализацию из-под коробки.
В какой-то момент я понял, что нужно серьёзно подойти к задаче и наконец-то построить дерево метрик сервиса. После этого логично возникла задача визуализации, и здесь возникли проблемы, связанные с доступным инструментарием Яндекс Метрики:
мало типов визуализации;
нет возможности построить retention;
нет возможности делать подробную аналитику по хитам (событиям внутри одного визита сайта).
Яндекс Метрика + DataLens
Яндекс Метрика - это прежде всего собиралка событий на сайте. Почему бы тогда не использовать другой инструмент визуализации для этих же данных?
Оказалось, что за меня уже подумали, и есть прямая интеграция Яндекс Метрики с инструментом BI-аналитики DataLens. Выглядит просто и круто! Однако если бы всё было так просто, статьи бы не было :)
Интеграция с Яндекс Метрикой - это интеграция не с сырыми данными Метрики, а с отдельными API Метрики. И с точки зрения работы с DataLens у такой интеграции очень порезанный функционал: практически никакие функции DataLens не работают с Яндекс Метрикой. Применяя это к моим хотелкам я получил только один бонус: у меня стало немного больше типов визуализаций. Однако я даже не всё мог реализовать в такой связке из того, что мог сделать в интерфейсе самой Яндекс Метрики.
Яндекс Метрика + Clickhouse + DataLens
Если мы посмотрим внимательно на поддержку функций DataLens при подключении к разным источникам данных, то заметим, что всё прекрасно работает с Clickhouse. Окей, а можно ли интегрировать Яндекс Метрику с Clickhouse без пота и боли? Да, и даже есть инструкция!
Кажется, работал бы я в крупной компании, это и было бы первым решением, к которому я бы пришёл. Всё-таки Clickhouse отлично работает с большими объёмами данных, это решение выглядит масштабируемым, да и всё уже готово.
Однако для моего pet-project есть пару недостатков такого решения.
Минимальная сборка Clickhouse будет стоить 2500 рублей в месяц (на момент написания статьи).
Для того, чтобы это вообще заработало, нужно откуда-то получить доступ к пакету Метрика Про. Можно получить пробную версию, но проблему это не решит.
А можно бесплатно и качественно, пока я не готов платить кучу денег за pet-project?
BI-аналитика на коленке
Что мы имеем на данный момент?
У Яндекс Метрики есть API. Отсюда можно получать сырые данные.
Есть какой-то опыт работы с DataLens (когда пытались что-то собрать на прямой интеграции с Яндекс Метрикой).
В принципе DataLens может много с чем работать.
Через Clickhouse и нормальные интеграции делать скорее всего не получится, и лучше искать обходные пути.
Яндекс Метрика + Github Actions + Google Sheets + DataLens
Если уж ставить цель не платить деньги за костыли, то идти до конца и не платить ни копейки :)
Схема, к которой я пришёл, выглядит следующим образом.
На сайте подключен счётчик Яндекс Метрики, который на сервера Яндекса сохраняет данные.
По образу и подобию выгружаем данные с помощью API Яндекс Метрики. Чтобы это всё работало по регламенту, я использую Github Actions.
В рамках этого же регламента выгруженные данные регулярно перезаписывают таблицы в Google Sheets.
В DataLens отчёты построены на Google Sheets таблицах, где поддерживается автообновление данных и большое количество функций DataLens.
Таким образом, мы имеем регламентное обновление данных в инструменте BI-аналитики, при этом для нас это стоит 0 рублей. Ну разве не счастье?
Готовое решение
Думаю, не мне одному хотелось бы видеть в этот момент готовое и оформленное решение, которое можно просто форкнуть на Github. Собственно, вот оно: TransferYandexMetricToGoogleSheets. Здесь приведены:
скрипт, который будет перетаскивать данные из Яндекс Метрики в Google Sheets;
скрипт запуска всего кода по регламенту в Github Actions;
подробная документация как с этим работать.
Ограничения
Данные нельзя получить за текущий день. Таким образом, вся аналитика - это не онлайн-мониторинг, так как всё будет с лагом в день. Чтобы я мог видеть хотя бы часть метрик актуальными, я оставил несколько дэшбордов в интерфейсе Яндекс Метрики. С другой стороны, обновлять данные в отчётах придётся не чаще раза в день, поэтому никакие лимиты на запросы не будут съедены.
При больших данных всё может сломаться. Есть ограничения на размер данных из API Яндекс Метрики, на количество запросов к частям данных API Яндекс Метрики, на время отработки процесса по крону Github Actions, на время загрузки данных в Google Sheets, на размер файлов Google Sheets в DataLens.
Заключение
В результате мини-исследования инструментов веб-аналитики мы смогли построить регулярно обновляемую веб-аналитику по pet-project. Более того, разработан готовый инструмент для построения такой аналитики. Надеюсь, он будет полезен для людей вроде меня, которым лень в код, и хочется всё готовое :)
P.S. Ну и калькулятор размера выборки ABnTester тоже можете использовать, аналитика ваших действий сделает инструмент только лучше :)