Задача
Есть несколько рекламных кабинетов, из которых нужно собрать затраты на рекламные кампании: Facebook, Yandex.Direct, Google Adwords, Vkontakte. Также есть затраты на маркетинг, которые не проходят через рекламные кабинеты, а ведутся в ручном справочнике.
Пользователи, которых привлекли с помощью рекламных кампаний, совершают покупку на сайте.
На сайте установлен Google Analytics, который фиксирует id пользователей, их utm-метки и покупки.
Хотя задача кажется стандартной, есть несколько нюансов в бизнес-логике, из-за которой стандартные решения не подошли:
- Из-за особенностей маркетинговой стратегии нужно реализовать кастомную логику атрибуции.
- Отчет нужен в разрезе по рынку пользователя (ru/en), при этом критерии того, к какому рынку относится пользователь, довольно сложные.
Решение задачи
Такой подход значительно увеличивает доступность данных и, соответственно, качество выводов, которые бизнес-пользователи могут извлечь из данных самостоятельно.
Чтобы подготовленные данные действительно можно было использовать, нужно (и очень важно!), чтобы эти данные были хорошо документированы.
Моделирование данных
В результате моделирования мы выделяем в данных:
- Анкеры (это основные существительные предметной области, например, пользователь, визит, рекламная кампания и т.п.).
- Атрибуты (это характеристики анкеров, например, имя пользователя, дата визита, название рекламной кампании);
- Линки (связи между двумя анкерами, например, «пользователь сделал заказ»).
Реализация data API
Такой подход сильно упрощает тестирование данных: по сути мы видим полный граф трансформаций каждого атрибута, поэтому если замечаем ошибку в данных, то можем проверить трансформации вплоть до сырых данных.
Также если каждый атрибут — это независимая таблица с данными в БД, то к задаче можно подключить сразу несколько аналитиков, которые могут работать над реализацией атрибутов параллельно.
Когда данные собраны, можно приступать к сбору витрины для конечных пользователей и отчетности.
Как работает модель данных, всё в сборе:
Сбор витрины для self-service аналитики
Для подготовки витрины для self-service аналитики в Metabase, мы прежде всего собираем все данные, доступные в data api в несколько связанных широких таблиц:
- Таймлайн со всеми событиями системы, который мы собираем из всех линков, которые мы нашли на этапе моделирования данных.
- Широкая таблица на каждый анкер, в которую мы собираем все атрибуты анкера.
Определение метрик
Собираем финальный отчёт
Мы это делаем без написания sql, просто накликивая данные в Metabase.
Документация и ответы на вопросы заказчиков
Выводы и следствия из реализации
Данные доступны бизнес-пользователям в режиме self-service аналитики (аналитики самообслуживания).
- Данные полностью документированы и актуальность документации поддерживается «по построению».
- Благодаря независимой реализации каждого атрибута в отчеты легко добавлять дополнительные данные и разрезы (например, реализация альтернативной модели атрибуции — это добавление ровно одного атрибута).
- Также, благодаря независимой реализации каждого атрибута, новым аналитикам, которые подключатся к проекту в будущем, будет легко отследить логику трансформации данных и вносить изменения в проект.