Платформа сбора данных и моделирования с открытым исходным кодом для аналитики продуктов

За последние полтора года мы вместе с командой из 10 человек упорно работали над проектом с открытым исходным кодом под названием Objectiv, чтобы:

  1. собирать данные для анализа продуктов в суперструктурированном формате, с потрясающим инструментарием для разработчиков; и
  2. быстро анализировать эти очень структурированные данные в обычном блокноте, используя готовые модели данных или создавая свои собственные, и по желанию делиться результатами анализа в других инструментах, таких как BI.

Для моделирования мы используем библиотеку с интерфейсом, похожим на Pandas (называется Bach), которая переводит все операции в SQL и работает прямо на любом хранилище данных SQL.

Почему мы начали этот проект

Мы много работали по обе стороны продуктовой аналитики: и как разработчики, и как специалисты по анализу данных. И мы всегда сталкивались с одними и теми же проблемами:

  • Как front-end разработчику, инструменты отслеживания инструментария не помогают собрать нужные данные. Каждая точка данных — это пользовательская реализация, и в вашей IDE нет документации или линтинга, чтобы помочь отследить правильные свойства и типы. Возможно, есть план отслеживания в большой таблице Excel, но он, скорее всего, неполный и устаревший. И как только команда разработчиков данных начинает работать с полученными данными, они постоянно запрашивают изменения/дополнения для сценариев использования, о которых они не подумали заранее, что означает, что вы постоянно возвращаетесь назад и вперед по реализации.
  • Как специалист по исследованию данных, вы должны сначала потратить большую часть своего времени на очистку, подготовку и преобразование данных, прежде чем вы сможете приступить к реальному моделированию. И вам придется повторять этот цикл для каждого приложения и случая использования моделирования, потому что каждый изобретает свой собственный формат данных. Это означает, что вы также не можете делиться & повторно использовать модели данных с другими. И после того, как вы закончили, вам все равно нужно перевести вашу модель в версию, пригодную для производства.

 

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

 

Что мы создали, чтобы попытаться решить эту проблему

Набор тесно интегрированных инструментов для устранения разрыва между сбором данных и моделированием:

  1. Открытый формат данных, который подходит для любого пользовательского интерфейса продукта и моделирования аналитики.
  2. Tracker SDK для современных фреймворков с отличной поддержкой разработчиков.
  3. Открытый центр моделей: библиотека python с коллекцией готовых моделей данных.
  4. Bach: библиотека python, которая запускает модели и операции непосредственно на любом хранилище данных.

Более подробная информация о каждом из них приведена ниже.

1) Открытый формат данных, который подходит для любого пользовательского интерфейса продукта и моделирования.

Мы называем это открытой таксономией аналитики и приглашаем всех желающих внести в нее свой вклад.

Это попытка создать универсальную, общую структуру для аналитических данных. На данный момент мы работали с данными и аналитическими сценариями использования более чем 50 компаний, чтобы определить ее и убедиться, что она охватывает все. Конечно, она также может быть расширена для любых пользовательских сценариев использования.

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

Небольшая часть таксономии показана на скриншоте ниже:

 

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

2) SDK для современных фреймворков с потрясающей поддержкой разработчиков

Мы постарались максимально облегчить жизнь разработчиков фронтенда.

В настоящее время у нас есть SDK для React, React Native, Angular, а также для обычного JavaScript. Скоро появятся полные SDK для Vue и Next.js, и многие другие в нашем списке. Мы стремимся иметь SDK для каждого популярного фреймворка/платформы, чтобы инструментарий был идеально адаптирован к каждой из них.

Для инструментария таксономия точно предписывает, что и как отслеживать, поэтому вам не нужен план отслеживания. Вы можете просто заменить любой компонент или HTML-элемент в вашем приложении его объектным аналогом, который поставляется с SDK (например, TrackedButton на кнопку), или, если у вас есть свои собственные компоненты, вы можете обернуть их. Это позволит автоматически отслеживать все, со всеми необходимыми данными и расположением пользовательского интерфейса.

 

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

Кроме того, есть несколько инструментов для проверки таксономии до того, как она окажется в базе данных, см. ниже.

Валидация: в IDE

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

 

Валидация: в приложении, для обеспечения осознанности пользовательского интерфейса

Допустим, вы добавили две кнопки с одинаковым текстом & ссылка на экран, но не отслеживаете раздел, в котором они находятся. Это означает, что они фактически не будут однозначно различимы в данных специалистом по исследованию данных (о чем они, вероятно, будут преследовать вас позже :)).

Итак: мы предупреждаем вас об этом заранее, в консоли браузера, при загрузке страницы (при регистрации компонента).

 

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

Валидация: в приложении, чтобы убедиться, что отслеживаются правильные данные

Даже если у вас есть собственный случай отслеживания, вы не останетесь в одиночестве: вы получите те же инструменты проверки, что и в обычном SDK. Например, если вы не примените правильные данные, вы получите предупреждение, как показано ниже, в консоли браузера.

 

Сообщения очень описательны. Здесь говорится, что RootLocationContext отсутствует в стеке местоположений этого PressEvent, со ссылкой на справочную документацию. На самом деле это одна из ключевых точек данных, фиксирующая местоположение пользовательского интерфейса верхнего уровня, где произошло это событие, например, домашняя страница. Рядом с этим есть ссылки на документацию, специфичную для вашей платформы (в данном случае React), которая фактически расскажет вам, как исправить эту проблему.

Подобные сообщения отправляются для любых данных, которые отсутствуют, дублируются или являются избыточными.

Проверка: сквозное тестирование с помощью снимков

Как только вы установили отслеживание, вы хотите убедиться, что оно не сломается в процессе разработки вашего приложения. Для этого наши SDK поддерживают тестирование с помощью любого CI-фреймворка, в котором уже используются моментальные снимки. Например, мы используем Cypress для нашего сайта, и на скриншоте ниже показан один из наших тестов.

 

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

Вы можете запустить этот тест локально во время разработки или в CI. Мы, например, запускаем наши тесты с помощью GitHub Action на каждом push.

Для бэкенда: использовать Snowplow или Postgres

Мы также подумали об Ops :-). Есть бэкенд ‘Collector’, который хранит данные в Postgres, например, для использования при локальной разработке или если вы хотите быстро настроить систему. Но есть и полная интеграция со Snowplow, которая также легко работает с существующей установкой Snowplow.

3) «Открытый центр моделей»: библиотека python с коллекцией предварительно созданных моделей данных.

Для каждого продукта или проекта мы обычно проводим множество одинаковых анализов, которые приходится строить с нуля: количество пользователей, удержание, продолжительность сессии и т.д. Чтобы сделать это намного проще, мы создали библиотеку python с коллекцией готовых моделей данных, которые вы можете просто взять с полки, например, матрицу удержания, воронку обнаружения, логистическую регрессию и т.д. Ознакомьтесь с текущим (и растущим) списком моделей здесь.

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

# show a retention matrix, monthly, with percentages
retention_matrix = modelhub.aggregate.retention_matrix(
    df, 
    time_period='monthly',
    percentage=True, 
    display=True)
retention_matrix.head()
Войти в полноэкранный режим Выход из полноэкранного режима

 

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

4) Bach: библиотека python, которая запускает модели & операции непосредственно на любом хранилище данных.

Последняя часть — это библиотека python под названием Bach, которая позволяет строить модели данных на любом наборе данных, точно так же, как это делается с помощью Pandas. Разница в том, что под капотом каждая операция переводится в SQL, который выполняется непосредственно в хранилище данных, так что вы работаете с полным набором данных (хотя вы также можете переключаться между ним и образцом с помощью одной команды).

# generate descriptive statistics of a DataFrame
# directly queries the database
df.describe(include='all').head()
Вход в полноэкранный режим Выход из полноэкранного режима

Мы сохранили его интерфейс почти таким же, как у Pandas, поэтому кривая обучения практически отсутствует. Кроме того, в нем есть несколько дополнительных операций, облегчающих работу с данными, собранными в соответствии с таксономией открытой аналитики, например, создание определенного DataFrame из базы данных.

Поскольку он переводит все в SQL, после построения модели ее использование в производстве сводится к экспорту полученного SQL в любое решение, такое как dbt, BI-инструмент, например Metabase, и т. д. Поскольку модели строятся непосредственно на полном наборе данных, вы можете быть уверены, что они работают одинаково и на производстве.

 

Цель Bach — быть на 100% независимым от хранилища данных, чтобы вы могли легко переключить любую созданную вами модель на другую базу данных. В настоящее время мы поддерживаем PostgreSQL, Google BigQuery и (очень скоро) Amazon Athena. На очереди — Databricks, RedShift, Clickhouse и т.д.

Куда мы хотим двигаться с проектом

Наша мечта — создать вокруг проекта сообщество разработчиков и data scientist’ов, которые будут вносить свой вклад в открытую таксономию аналитики и модели, чтобы она охватывала все случаи использования аналитики продукта — от аналитики продукта до a/b тестирования, платежей, персонализации и т.д.

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

Проверьте это и дайте нам звезду 🙂

Надеюсь, вам понравится. Проверьте проект на GitHub, и, пожалуйста, дайте нам звезду, чтобы другие тоже могли нас найти! https://github.com/objectiv/objectiv-analytics

Оцените статью
devanswers.ru
Добавить комментарий