Ассоциированные конверсии в Яндекс Метрике Про

15 сентября, 2024

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

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

Рекомендуется к прочтению:

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

Начало работы

Владелец сайта после установки счетчика Яндекс Метрики, как правило, работает в интерфейсе сервиса. Он использует отчеты, просматривает графики, анализирует данные в таблицах, меняет параметры и показатели, накладывает фильтры, сравнивает сегменты и аудитории за разные диапазоны дат, и многое другое.

Пример отчета (сводки) в Яндекс Метрике

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

Именно поэтому интернет-маркетологи и веб-аналитики используют в своей работе API. Для получения неагрегированных данных, так называемых «сырых данных» Яндекс Метрики, используется Logs API. Вы делаете запрос на те данные, которые хотите загрузить из Logs API, и вам выдается список тех посещений пользователей, которые были на вашем сайте. Можно увидеть Client ID посещения, время пребывания на сайте, просмотры страниц, регион пользователя, источник перехода и многое другое.

Пример неагрегированных данных, выгруженных с помощью Logs API

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

Именно благодаря выгрузке данных с помощью Logs API и языка программирования Python мы и будем строить ассоциированные конверсии на данных Яндекс Метрики, используя Yandex Cloud, Yandex DataSphere и ClickHouse.

Итак, чтобы начать работу, вам необходимо зарегистрироваться в Yandex Cloud, настроить сообщество в DataSphere и привязать к нему платежный аккаунт. Перейдите по ссылке и нажмите на кнопку Попробовать бесплатно:

Попробовать Yandex DataSphere бесплатно

Войдите с помощью Яндекс ID или рабочего аккаунта в федерации (SSO). Поскольку мы будем работать с данными Яндекс Метрики, то используйте для входа свою учетную запись, на которой размещен счетчик.

Вход через Яндекс ID

Если вы впервые используете Yandex Cloud, то после входа в Yandex DataSphere для вас будет создана новая организация с префиксом organization- и названием вашего аккаунта.

Новая организация

Создание платежного аккаунта

Вам также необходимо создать платежный аккаунт и привязать его к сообществу DataSphere. Для этого перейдите по ссылке и создайте новый аккаунт:

Создание платежного аккаунта

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

Общая информация

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

Выбрав Новый плательщик и Тип аккаунта (Физическое лицо или Юридическое лицо/ИП), нажмите Вперед. Если вы выбрали физическое лицо, то на следующем шаге заполните свои персональные данные - имя и фамилию.

Персональные данные

На шаге платежных данных привяжите свою банковскую карту. Укажите 16-значный номер, срок действия, код CVV (с обратной стороны карты):

Привязка карты

Заполнив данные, нажмите кнопку Привязать. Для проверки валидности карты на вашем счету будет заблокирована незначительная сумма (~ 11 рублей). Эти средства не списываются и будут снова доступны после завершения проверки и разблокировки. Срок разблокировки несписанных средств зависит от условий работы вашего банка.

Если карта прошла валидацию, вы увидите ее в списке привязанных:

Привязанная карта

На последнем шаге заполните контактные данные – электронную почту и телефон:

Контактная информация

Эта информация нужна не только для связи с вами, но и для выставления счетов и финансовых документов.

Если это ваш первый платежный аккаунт в Yandex Cloud, вам будет доступно подключение пробного периода и гранта. Для этого обязательно поставьте галочку Включить пробный период:

Активация пробного периода и получения гранта

Грант - скидка, которая предоставляется ИП, организации или физическому лицу на использование любых сервисов Yandex Cloud. Он будет начислен при создании первого платежного аккаунта, если ранее вы никогда не приобретали услуг Yandex Cloud и не активировали пробный период. Стартовый грант действует 60 дней. Размер и валюта гранта зависят от страны, в которой вы проживаете:

  • для резидентов Российской Федерации (РФ), а также налоговых резидентов Республики Беларусь (РБ) размер гранта составляет не менее 4000 ₽, с учетом НДС;
  • для резидентов Республики Казахстан (РК) размер гранта составляет не менее 24 000 ₸, с учетом НДС;
  • для нерезидентов Российской Федерации и Республики Казахстан размер гранта составляет не менее 50 $, без учета налогов и сборов.
Подробнее о гранте читайте в официальной документации Yandex Cloud.

Если вы выбрали тип Юридическое лицо или ИП, тогда вам потребуется указать данные плательщика (название организации, почтовый индекс, фактический и юридический адреса, ИНН, КПП, БИК, расчетный счет). При выборе способа оплаты Банковский перевод платежный аккаунт будет создан в статусе «Не подтвержден». На вашу почту, указанную в аккаунте Яндекса или Яндекс Коннекта, будет отправлено письмо с описанием дальнейших действий. Активация платежного аккаунта может занять до трех рабочих дней.

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

  • никогда не приобретали услуги Yandex Cloud;
  • ранее не активировали пробный период.

Пробный период позволяет бесплатно использовать ресурсы Yandex Cloud в ограниченном режиме. При этом потребленные ресурсы оплачиваются из средств стартового гранта. После завершения пробного периода ресурсы будут сохранены, но остановлены. Для возобновления работы с Yandex Cloud в полном объеме потребуется перейти на платную версию.

Примечание: включение пробного периода происходит только на этапе создания первого платежного аккаунта для юридического лица в сервисе Yandex Cloud Billing.

В завершение нажмите кнопку Создать. После этого вас перенаправит на страницу Биллинга, на которой будут отображены ваши платежные реквизиты. Убедитесь, что ваш аккаунт активен:

Активный платежный аккаунт

Привязка платежного аккаунта к DataSphere

Теперь вернитесь в Yandex DataSphere, перейдите в раздел Сообщества и выберите сообщество организации по умолчанию:

Сообщества - сообщество по умолчанию

Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Для это прокрутите страницу чуть вниз и в блоке 1. Привяжите платежный аккаунт нажмите на кнопку Привязать:

Привязка платежного аккаунта к DataSphere

В открывшемся окне выберите свой платежный аккаунт и нажмите Привязать:

Привязать

Через некоторое время вы получите уведомление об успешной привязке платежного аккаунта к сообществу DataSphere.

Подключение ClickHouse

ClickHouse позволяет работать с неагрегированными статистическими данными Яндекс Метрики, полученными с помощью Logs API. Для этого вы можете арендовать место в Yandex Cloud. Но сразу хотелось бы сказать, что это решение является платным и будет зависеть от выбранного вами кластера и итоговой конфигурации (настроек).

Для работы с ClickHouse в Яндекс Облаке вам понадобится проект. Если вы никогда не работали в Yandex Cloud, то перейдите по ссылке и создайте свое первое облако. Выберите вашу организацию и введите название облака:

Создание облака в Yandex Cloud

После его создания вас перенаправит в консоль управления:

Консоль управления облаком

Теперь в созданном каталоге для создания кластера ClickHouse выберите меню Managed Service for ClickHouse:

Managed Service for ClickHouse

В открывшемся окне нажмите Создать кластер ClickHouse:

Создание кластера ClickHouse

Укажите настройки кластера ClickHouse:

  • в блоке Базовые параметры укажите произвольное имя кластера или оставьте его по умолчанию;
  • в блоке Ресурсы выберите платформу Intel Cascade Lake, тип burstable и класс хоста b2.medium;

Примечание: не рекомендуется использовать конфигурации ВМ типа burstable в продакшн-среде. В руководстве Yandex Cloud они используются в качестве примера. Для продакшн-решений используйте конфигурации standard или memory-optimized.

  • в блоке Размер хранилища оставьте значение 10 ГБ;
  • в блоке Хосты нажмите значок карандаша (редактирования);

Редактирование хоста

Включите опцию Публичный доступ и нажмите кнопку Сохранить.

Публичный доступ

В блоке Настройки СУБД выключите управление пользователями через SQL, укажите имя пользователя, пароль и имя БД:

Настройки СУБД

В блоке Сервисные настройки включите опции:

  • доступ из DataLens
  • доступ из WebSQL
  • доступ из Метрики и AppMetrica
  • доступ из Serverless
  • доступ из Yandex Query

Сервисные настройки

Они не будут нам все нужны для ассоциированных конверсий, но могут пригодиться вам в других задачах (работе с БД ClickHouse и визуализации данных в Yandex DataLens).

После всех проведенных настроек вы можете оценить итоговую конфигурацию вашего кластера ClickHouse и ежемесячную стоимость аренды перед тем, как его создать. Как вы уже знаете, стоимость аренды хранилища зависит от выбранного ресурса, его размера и других настроек. Согласно тому, что написано в документации Yandex Cloud, примерная стоимость аренды для текущего решения и работы с Logs API Яндекс Метрики будет составлять 3000 руб./месяц:

Конфигурация кластера ClickHouse и его настройки

В завершение нажмите кнопку Создать кластер.

Подключение DataSphere

Откройте главную страницу DataSphere. В разделе Сообщества выберите сообщество, в котором вы хотите создать проект. В правом верхнем углу нажмите кнопку Создать проект:

Создание проекта

В открывшемся окне укажите имя и (опционально) описание проекта. Требования к имени:

  • Длина - от 3 до 63 символов;
  • Может содержать строчные буквы латинского алфавита, цифры и дефисы;
  • Первый символ - буква. Последний символ - не дефис.

Создание проекта

Нажмите кнопку Создать. После создания проекта нажмите кнопку Открыть проект в JupyterLab:

Открыть проект в JupyterLab

Перед вами откроется среда разработки JupyterLab, в которой вы будете работать дальше:

JupyterLab

Клонирование репозитория в DataSphere

В меню Git выберите Clone a Repository:

Git - Clone a Repository

Для работы с ассоциированными конверсиями Яндекс Метрики воспользуемся решением от zhdanchik. В открывшемся окне укажите URI репозитория https://github.com/zhdanchik/yandex_metrika_connector_cases.git и нажмите кнопку CLONE:

CLONE

Нажмите кнопку OK. Если все прошло успешно, то в правом нижнем углу вы увидите надпись Successfully cloned на зеленом фоне, а в вашем проекте в папке yandex_metrika_connector_cases будут присутствовать следующие файлы:

Файлы из клонированного репозитория

  • 0. check clickhouse connection.ipynb - проверка, есть ли доступ до ClickHouse;
  • 1. prepare visits table.ipynb - необязательный пункт, загрузка визитов в нужном формате, если коннектора пока нет, а данные были получены с помощью Logs API;
  • 2. analysis of channels chains.ipynb - основной NoteBook для работы. В нем будет инициализирован экземпляр класса, будут собраны визиты в нужном формате из ClickHouse таблиц, создание цепочек и их анализ;
  • README.md - описание проекта;
  • YandexInternalRootCA.crt - сертификат безопасности для взаимодействия с кластером ClickHouse;
  • analyse_channels_chain.py - основная программа, которая содержит реализацию класса DataPreparer, необходимого для обработки данных о визитах пользователей и построении ассоциированных конверсий;
  • some_funcs.py - код, содержащий клиент для работы с базой данных ClickHouse и визуализации данных с помощью пакета Plotly (библиотека на Python для визуализации данных). Он включает функции для выполнения запросов к базе данных, преобразования результатов в датафрейм (DataFrame) и создания различных типов графиков, таких как воронки и линейные графики. Также присутствует функциональность для загрузки файлов с Яндекс Диска;
  • source_names.csv - файл сопоставления источников трафика (SourceName) по кодам (SourceCode).

Создание приложения и получение токена доступа

Чтобы выгрузить данные из своего счетчика Яндекс Метрики, вам необходимо сначала создать приложение, а затем получить токен доступа. В рамках данного руководства я не буду подробно описывать эти шаги настройки. Вы можете прочитать две статьи ниже на контентной платформе lib.osipenvkov.ru:

В них подробно разобраны все этапы. В завершение не забудьте сохранить полученный токен доступа.

Проверка подключения к базе ClickHouse

В корневой директории создайте новый текстовый файл с названием _chpass.txt. Запишите в него пароль заведенного пользователя, который вы задали при создании кластера ClickHouse (см. выше).

Файл _chpass.txt с паролем в корневой директории

Перейдите в папку yandex_metrika_connector_cases и откройте файл 0. check clickhouse connection.ipynb. Он нужен для проверки вашего подключения к созданному кластеру ClickHouse.

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

  1. CH_HOST_NAME - имя хоста;
  2. CH_USER - имя пользователя;
  3. CH_DB_NAME - имя БД.

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

Доступность кластера - Alive

После этого откройте кластер, кликнув на сам кластер. Выберите из списка слева Хосты. На вкладке Обзор скопируйте FQDN хоста:

Копирование FQDN хоста

Вставьте это значение в переменную CH_HOST_NAME. CH_USER и CH_DB_NAME - это имена пользователя и БД соответственно.

Ввод собственных значений

После этого запустите код программы. Сделать это можно, нажав на соответствующую иконку Run или же с помощью сочетания клавиш Shift + Enter:

Запуск программы 0. check clickhouse connection.ipynb

Если вы все сделали правильно, то в самом конце программы вы должны увидеть версию сервера ClickHouse:

Результат проверки - отображение версии ClickHouse

Она должна совпадать с версией вашего кластера, которую можно посмотреть на вкладке Обзор в настройках ClickHouse:

Версия ClickHouse в настройках

Подготовка данных с визитами

Для того, чтобы построить ассоциированные конверсии на данных Яндекс Метрики, вам потребуется таблица с визитами.

Требуемые поля таблицы:

Подробнее о полях Logs API, их типе и описании читайте в официальной документации Яндекса.

Формат получаемых данных такой:

О том, как получить такую таблицу с нужными полями, читайте в этом руководстве. В нем подробно описан процесс интеграции Яндекс Метрики с базой данных ClickHouse, созданной в Yandex Cloud, чтобы вы смогли получать неагрегированные данные вашего счетчика с рядом преимуществ по сравнению с Logs API. Основная настройка, которую вам необходимо сделать, находится в разделе Создание трансфера (Yandex Data Transfer).

Если таблицы с таким списком полей у вас еще нет, и вы не используете Метрику Про, а работаете в обычном счетчике Яндекс Метрики, то таблицу с визитами вам нужно сформировать самостоятельно. Этот этап выходит за рамки данного руководства, поскольку статья посвящена именно ассоциированным конверсиям для Яндекс Метрики Про. И описанное ниже решение вам не подойдет, поскольку в следующей программе Python используется именно такой список полей. В отдельном руководстве я планирую адаптировать репозиторий автора (zhdanchik) под стандартную Яндекс Метрику.

К сожалению, некоторые поля недоступны в Logs API при самостоятельной выгрузке. Например, поля Sign и visitVersion создаются автоматически и только с использованием готовой интеграции Яндекс Метрики - Yandex Cloud - ClickHouse. Поэтому выгрузить с помощью собственного кода на Python по Logs API все данные вы не сможете.

В качестве примера вы можете скачать таблицу по ссылке, чтобы посмотреть как выглядит набор данных, на основе которого будут рассчитываться ассоциированные конверсии, загрузить файл в свой проект DataSphere и запустить код программы 1. prepare visits table.ipynb. После его выполнения в вашем кластере ClickHouse должна появиться новая таблица с визитами visits_from_ch:

Созданная в ClickHouse таблица на тестовых данных после выполнения программы 1. prepare visits table.ipynb

Примечание: открыть пример файла по ссылке на компьютере после его скачивания можно следующим образом - переименуйте visits_fake_data_for_meetup_v2.tar.gz в файл с расширением json.gz, чтобы получилось как visits_fake_data_for_meetup_v2.json.gz. После этого вы сможете открыть его с помощью обычного архиватора и извлечь файл в формате .json.

Пример файла с данными визитов из программы 1. prepare visits table репозитория zhdanchik

Команда Яндекса любезно предоставила мне доступ к Яндекс Метрике Про для osipenkov.ru (за это им БОЛЬШОЕ СПАСИБО), поэтому я смогу построить ассоциированные конверсии для своих данных.

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

Таблица визитов, выгруженная с помощью Yandex Data Transfer

Примечание: пример схемы данных для таблицы визитов при автоматической выгрузке в ClickHouse с помощью Yandex Data Transfer вы можете посмотреть здесь.

После формирования таблицы с визитами возвращаемся в Yandex DataSphere. Откройте программу 2. analysis of channels chains.ipynb. Это основной notebook для работы. В нем будет инициализирован экземпляр класса, будут собраны визиты в нужном формате из ClickHouse таблиц, создание цепочек и их анализ.

Программа 2. analysis of channels chains.ipynb

Первая ячейка программы - точно такая же, как и в программе с проверкой доступа к ClickHouse. Просто скопируйте значения имени хоста, имени пользователя и имени базы данных. Перепроверьте, что в корневой директории присутствует текстовый файл с названием _chpass.txt. Как вы помните, в нем записан пароль пользователя от кластера ClickHouse (см. выше).

Запустите первые четыре ячейки программы. Если вы все сделали правильно, то в завершение получите вашу версию кластера ClickHouse:

Инициализация доступа к ClickHouse

Запуск основной программы

Теперь начинается основная программа. Для работы со всеми методами и построения ассоциированных конверсий используется класс-интерфейс DataPreparer из модуля analyse_channels_chain (отдельный файл с программой .py):

Класс DataPreparer

Сначала его надо импортировать, а потом создать экземпляр класса, проинициалиировав его нужными значениями.

Выполнение ячейки программы

В следующей ячейке задайте собственные значения:

  • table_preffix - префикс таблиц, которые создадутся в процессе анализа (можно оставить без изменений);
  • raw_visits_table - название таблицы, в которой располагаются ваши визиты;

Поскольку я использую Yandex Data Transfer, то таблица с визитами была названа автоматически.

Название таблицы с визитами

У вас оно будет другим. Период анализа выставляете свой собственный, ориентируясь на даты выгрузки данных в ClickHouse.

  • start_date - начало периода анализа;
  • end_date - конец периода анализа;

Цель, которую я буду анализировать - это скачивание электронной книги Google Analytics 4. Идентификатор любой цели в Яндекс Метрике можно посмотреть в разделе Цели:

Идентификаторы целей в Яндекс Метрике

Идентификатор нужной мне цели - 229813721.

Все эти данные нужно ввести в ячейку программы:

  • goals - идентификаторы целей через запятую, по которым будет производиться анализ. Оставьте [-1] для трактования e-commerce покупки как конверсии, либо пустой [], тогда каждый визит будет считаться как конверсия.

В результате ваши настройки могут выглядеть примерно так:

Пример настроек

Запустите две ячейки:

Запуск двух фрагментов кода

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

ValueError: Code: 62. DB::Exception: Syntax error: failed at position 1738 ('(') (line 26, col 11): (round(arraySum((arrayFilter(x, y -> has([229813721], y), Goals.Price, Goals.ID)) / 1000., 2), VisitVersion) as Revenue
FROM название_таблицы

Ошибка выполнения программы

Чтобы ее исправить, вам необходимо перейти в файл analyse_channels_chain.py и найти следующие строки (~540 строка):

Замените этот код на этот:

Чтобы получилось так:

Верный фрагмент кода, соответствующий правильному синтаксису

Примечание: обязательно проверяйте отступы в функции, иначе будет высвечиваться другая ошибка.

Сохраните изменения. Вернитесь к основной программе 2. analysis of channels chains и повторно запустите две ячейки. А еще лучше - перезапустите полностью свой проект в Yandex DataSphere и саму программу в JupyterLab, чтобы изменения точно вступили в силу.

Рестарт программы 2. analysis of channels chains.ipynb после правок

Запустив программу повторно, вы, вероятнее всего, увидите другую ошибку:

ValueError: Code: 47. DB::Exception: Missing columns: 'UserIDHash' while processing query: 'WITH TrafficSource.ClickBannerID[indexOf(TrafficSource.Model, 1)] AS ClickBannerID_pre, TrafficSource.ClickTargetType[indexOf(TrafficSource.Model, 1)] AS ClickTargetType_pre, TrafficSource.StartTime[indexOf(TrafficSource.Model, 1)] AS StartTime_pre, TrafficSource.ID[indexOf(TrafficSource.Model, 1)] AS TraficSourceID_pre, TrafficSource.SearchEngineID[indexOf(TrafficSource.Model, 1)....

Ошибка выполнения программы

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

Данная ошибка указывает на то, что в процессе выполнения запроса в базе данных отсутствует колонка с названием UserIDHash. И вот вам простое объяснение - поскольку построение ассоциированных конверсий на данных Яндекс Метрики возможно как с помощью загрузки собственных данных с помощью Logs API, так и благодаря готовому коннектору для Метрики Про, автор репозитория (zhdanchik) предоставил нам выбор. Разумеется, он не мог учесть индивидуальные особенности каждого проекта - формируете ли вы таблицу визитов самостоятельно через Logs API или через Yandex Data Transfer (готовый коннектор Метрики Про). Или вообще используете его готовый набор данных (датасет) visits_fake_data_for_meetup_v2.tar.gz.

Вот как раз в его тестовом наборе данных visits_fake_data_for_meetup_v2.tar.gz и фигурирует поле с названием UserIDHash:

Поле "UserIDHash" в тестовом наборе данных

И поэтому программа написана с учетом этой особенности. У вас же, как и у меня в примере, может использоваться готовое подключение от Метрики Про, а там поле называется иначе - CounterUserIDHash:

Поле "CounterUserIDHash" в таблице визитов (Метрика Про)

И тогда в программу analyse_channels_chain.py нужно внести еще одно изменение - заменить (~36 строка) значение UserIDHash на свое собственное:

Замена значения UserIDHash на свое

У меня - это CounterUserIDHash, поэтому в программе это будет выглядеть так:

Скорректированное значение поля

Сохраните изменения. Вернитесь к основной программе 2. analysis of channels chains и повторно запустите две ячейки. А еще лучше - перезапустите полностью свой проект в Yandex DataSphere и саму программу в JupyterLab, чтобы изменения точно вступили в силу.

Если вы все сделали правильно, то в процессе выполнения программы вы должны увидеть шкалу загрузки, а в завершение - 100%:

Успешная загрузка

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

Новая созданная таблица ClickHouse для работы с ассоциированными конверсиями

Запустите следующую ячейку с кодом.

Выполнение метода combine_visits

С помощью нее выполняется метод сombine_visits. Он создает таблицу с цепочками переходов по каждому пользователю. 1 элемент цепочки - 1 касание. В данной версии в качестве касания может выступать визит, у которого есть источник перехода. Каждая цепочка может кончится либо визитом либо пустотой - если после последнего перехода прошло достаточно времени, чтобы констатировать отток пользователя. Отток может произойти либо посередине истории пользователя, когда время между соседними касаниями-визитами больше чем 95% персентиль расстояния между визитами в среднем на счетчике. Также отток может произойти, если между последним визитом и концом исследуемого периода тоже прошло столько же времени Тип элемента цепочки, который отвечает за касание визита - 2_VISIT, тип элемента цепочки, отвечающий за отток - 0_NULL. Отток может быть только в конце цепочки.

Цепочки представлены в массивах history.*

  • history.VisitID - VisitID каждого элемента цепочки (если элемент - визит);
  • history.SourceCode - код источника трафика;
  • history.StartTime - время элемента цепочки в таймзоне счетчика;
  • history.UTCStartTime - время элемента цепочки в UTC;
  • history.EventType - тип элемента цепочки (0_NULL - отток, 2_VISIT - визит);
  • history.Duration - длительность визита, если элемент цепочки - визит;
  • history.Conversions - конверсии в визите, если элемент цепочки - визит.

В процессе выполнения программы вы должны увидеть шкалу загрузки, а в завершение - 100%:

Успешная загрузка

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

Новая созданная таблица ClickHouse для работы с ассоциированными конверсиями

Запустите следующую ячейку программы. Все последующие комментарии я возьму из программы автора. Там даются исчерпывающие сведения о каждом фрагменте кода и методе.

Запустите ячейки с методом simple_attributions. Он считает простые позиционные атрибуции и возвращает DataFrame с результатами:

Метод simple_attributions

Содержание полей таблицы:

  • SourceCode - код источника трафика;
  • SourceName - название источника трафика;
  • LastClickVisits, LastClickConvs, LastClickRevenue - визиты, конверсии и доход в атрибуции "Последний клик";
  • FirstClickVisits, FirstClickConvs, FirstClickRevenue - визиты, конверсии и доход в атрибуции "Первый клик";
  • LastSignClickVisits, LastSignClickConvs, LastSignClickRevenue - визиты, конверсии и доход в атрибуции "Последний значимый клик";
  • LastSignDirectVisits, LastSignDirectConvs, LastSignDirectRevenue - визиты, конверсии и доход в атрибуции "Последний переход их Яндекс Директа";
  • LinearAttrVisits, LinearAttrConvs, LinearAttrRevenue - визиты, конверсии и доход в атрибуции "Линейная" / "Равномерная".

Запустите ячейки с методом associated_conversions. Он считает ассоциированные конверсии и возвращает DataFrame с результатами:

Метод associated_conversions

Содержание полей таблицы:

  • SourceCode - код источника трафика;
  • SourceName - название источника трафика;
  • AssociatedVisits, AssociatedConvs, AssociatedRevenue - визиты, конверсии и доход ассоциированные с источником.

Запустите следующие ячейки программы с методом source_in_chains_metrics. Он считает позиционные метрики источников в цепочках:

Метод source_in_chains_metrics

Содержание полей таблицы:

  • in_chain_perc_total - средний вес в цепочке (число касаний во всех цепочках деленное на общее число касаний);
  • unique_chains_perc - доля уникальных цепочек (число уникальных цепочек, в которых источник имел хоть одно касание, поделенное на общее число цепочек);
  • first_touch_total - доля первых касаний (число уникальных цепочек, в которых источник был первым касание, поделенное на общее число цепочек);
  • first_touch_2plus - доля первых касаний (2+ цепочки) (то же, что и выше, но только для цепочек с более чем 1 касанием);
  • mid_touch_3plus - доля промежуточных касаний (число уникальных цепочек, в которых источник был промежуточным касанием, поделенное на общее число цепочек);
  • last_touch_total - доля последних касаний (число уникальных цепочек, в которых источник был последним касание, поделенное на общее число цепочек);
  • last_touch_2plus - доля последних касаний (2+ цепочки) (то же, что и выше, но только для цепочек с более чем 1 касанием).

Соответственно, то же, что и сверху, но берутся только цепочки с конверсией в конце:

  • in_conv_chains_perc_total
  • unique_conv_chains_perc
  • first_touch_conv_total
  • first_touch_conv_2plus
  • mid_touch_conv_3plus
  • last_touch_conv_total
  • last_touch_conv_2plus

Визуализация данных

После этого переходим к визуализации. Нарисуем таблицы с помощью Plotly. Прокликайте следующие три ячейки с кодом:

Если вы использовали цель Яндекс Метрики, имеющую доход, то вы увидите подробную таблицу с данными - источник, ассоциированные визиты, ассоциированные конверсии и ассоциированные доходы.

Ассоциированные визиты, ассоциированные конверсии и ассоциированные доходы Яндекс Метрики

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

Запустите следующий фрагмент кода, чтобы получить количество различных касаний в цепочках в разрезе по источникам трафика и их средний вес:

Количество различных касаний в цепочках

И последнее в программе - цепочки с конверсиями:

Цепочки с конверсиями

Примечание: сами источники трафика берутся из отдельного файла source_names.csv (скопировали из репозитория) и сопоставляются с их кодом. Если вы хотите изменить отображение источников трафика, то вам нужно изменить исходные данные.

На этом построение ассоциированных конверсий в Яндекс Метрике завершено!

Итоги

Если вы дошли до конца и у вас все получилось - я поздравляю вас! Хоть мы и не написали ни одной строчки кода, а лишь воспользовались готовым репозиторием, мы все равно молодцы! Это было непросто. Не каждый интернет-маркетолог и веб-аналитик, ежедневно работающий с Яндекс Метрикой, вообще знает о возможностях построения ассоциированных конверсий. А вы теперь не только знаете, но и умеете это делать. Знание ЧТО ТАК МОЖНО ДЕЛАТЬ гораздо важнее КАК ЭТО ДЕЛАТЬ.

Да, этот материал в большей степени основан на данных, выгруженных с помощью готового подключения в Метрике Про. Но сами шаги, выполняемые в процессе построения ассоциированных конверсий, актуальны и для данных, выгруженных с помощью Logs API. И создание проекта в Yandex Cloud, и привязка платежного аккаунта, и создание/подключение к ClickHouse, и подготовка таблицы визитов Яндекс Метрики для построения ассоциированных конверсий, и запуск основной программы, и визуализация данных. Нужно только учитывать особенности названия полей и удалить из основной программы лишние формулы и функции расчета.

Я постараюсь адаптировать этот материал под стандартную Яндекс Метрику и опубликовать его в блоге, но не обещаю это сделать быстро. А пока для своего проекта вы можете воспользоваться репозиторием zhdanchik (спасибо!) и чат-ботами ИИ, которые уже очень хорошо справляются с задачами изменения кода, правок ошибок и написания скриптов с нуля. Я во время написания данного руководства неоднократно обращался к ним за помощью. И скажу вам честно - это было очень продуктивно!

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике