Как настроить сквозную маркетинговую аналитику в режиме self-service (аналитики самообслуживания)
Наше подразделение Agima.ai занимается проектами в области машинного обучения и анализа данных. В аналитических проектах нам нравится, когда данные для отчетов доступны пользователям в режиме self-service аналитики (то есть, аналитики самообслуживания). В этом случае любой специалист может самостоятельно собрать себе нужный отчет в BI-инструменте, без использования SQL или другого кода.
Такой подход увеличивает доступность данных, скорость и качество выводов, которые бизнес-пользователи могут сделать по данным.
В этой статье расскажем, как подойти к задаче построения сквозной маркетинговой аналитики «с нуля» таким образом, чтобы:
данные были хорошо документированы;
в полученные отчеты было легко добавлять любые фильтры и разрезы: в том числе, по новым атрибутам пользователя, по сегментам АВ-тестирования, по языкам и т.п.
при необходимости систему могли легко взять на поддержку штатные аналитики.
Рассказ будем вести на примере одного из реализованных клиентских проектов.
Задача
Если коротко — построить сквозной отчет от клика пользователя по рекламному объявлению до покупки, оценить эффективность маркетинговых кампаний.
Если подробнее:
есть несколько рекламных кабинетов, из которых нужно собрать затраты на рекламные кампании: Facebook, Yandex.Direct, Google Adwords, Vkontakte. Также есть затраты на маркетинг, которые не проходят через рекламные кабинеты, а ведутся в ручном справочнике.
пользователи, которых привлекли с помощью рекламных кампаний, совершают покупку на сайте.
на сайте установлен Google Analytics, который фиксирует id пользователей, их utm-метки и покупки.
Задача кажется стандартной, но в клиентском проекте есть несколько нюансов в бизнес-логике, из-за которых стандартные решения не подошли:
Из-за особенностей маркетинговой стратегии нужно реализовать кастомную логику атрибуции и оценить каждый канал по двум моделям: кастомной и стандартной last click;
Есть ряд особенностей бизнес-логики, которые нужно учитывать при выстраивании связи маркетинговых каналов с покупками: например, языки пользователей;
На сайте проводятся АВ-тесты, поэтому хотелось, чтобы в будущем конверсии по рекламным каналам можно было смотреть в том числе в разрезе по сегменту тестирования, в который попал пользователь.
Как мы организовали процесс
Этап 1: Скачивание «сырых» данных
Для начала нам нужно получить набор данных для анализа.
В качестве хранилища данных мы используем BigQuery. Источников данных у нас девять.
Для загрузки данных используем open source стек Singer + Meltano. Для преобразования данных используем DBT.
Этап 2: Моделирование данных
Для проектирования модели предметной области используем минимальное моделирование. Это подход к моделированию данных, который позволяет одновременно разобраться в структуре данных и задокументировать ее.
В результате анализа выделяем в данных:
⚓️Анкеры (это основные существительные предметной области, например, ⚓️Пользователь, ⚓️Визит, ⚓️Рекламная кампания и т.п.).
Атрибуты (это характеристики анкеров, например, Имя пользователя, Дата визита, Название рекламной кампании).