https://habr.com/ru/post/515222/- Python
- Яндекс API
- Визуализация данных
- Контекстная реклама
Мне, как специалисту по рекламе, требуется постоянно присматривать за клиентами. В этом мне помогает Data Studio.
Однако специалистам по рекламе редко выделяют бюджеты на аналитику, поэтому приходится делать все своими руками.
Что нужно сделать чтобы визуализировать Яндекс Директ в Data Studio:
- Получить токен от своего аккаунта (за этим в справку Директа)
- На Python Написать запрос к серверу Яндекс Директ
- Сложить статистику в Pandas Data Frame
- Отправить данные в Google Big Query
- Построить визуализацию в Data Studio на основе данных в Google Big Query
Написать запрос к серверу Яндекс Директ и сложить данные в Pandas Data Frame
Раньше я ковырялся с запросами и потом редактировал данные, чтобы их можно было отправить. Можете попробовать, если вам нужны тонкие настройки (Писал про это ранее тут
habr.com/ru/post/445734)
Для остальных есть способ намного проще — мой python-пакет yadirstat. (обзор на него
habr.com/ru/post/512902). При его использовании вы вводите, токен, логин, даты и получаете готовый Data Frame, в котором ничего не нужно менять.
Примерно так выглядит код:
from yadirstat import yadirstat
x=yadirstat.yadirstat.campaign('FFFFFfffffFFFFggggGGGgg', 'client123123','2020-05-10','2020-07-15')
print(x)
Отправить данные в Google Big Query
Это самый очевидный способ собирать данные для последующей визуализации в DataStudio, так как они прекрасно работают в паре
Для отправки я использую пакет “pandas_gbq”
Код выглядит примерно так:
import pandas_gbq
pandas_gbq.to_gbq(x, 'YD_Days.test', project_id='red-abstraction-99999999',if_exists='replace', progress_bar=None)
Почему данные именно перезаписываются? Потому, что статистика в директе может со временем корректироваться и, если мы новые сроки будет просто добавлять, у нас будут расхождения в статистике.
Теперь проверим отправилась ли информация в Big Query. Если все прошло успешно, будет такой набор полей их типов
Построить визуализацию в Data Studio на основе данных в Google Big Query
Для этого можно сразу в Big Query создать запрос на получение всех данных:
нажимаете “Отправить запрос к таблице”, добавляете после SELECT “*” и убираете лимит. Примерно так выглядит запрос: “SELECT * FROM `red-abstraction-239999.YD_Days.test`”
В Data Studio Подключаемся к Google Big Query
В изменении источника увидим следующие поля
Требуется изменить следующие поля для корректной агрегации:
- AvgCpc
- ConversionRate
- CostPerConversion
- Ctr
Зачем это делается? Рассмотрим на примере CPC
Если у нас будет две строки со следующими данными:
- 100 кликов — Стоимость клика 100 руб — Стоимость 10000
- 2 клика — Стоимость клика — 10 руб — Стоимость 20 руб
Обычное среднее скажет, что CPC — по двум строкам 55
Поэтому, чтобы получить корректный CPC, следует поделить все расходы на все клики. В этом случае CPC получится 98,2
Просто скрываем эти поля и добавляем их аналоги:
- CPC=SUM(Cost)/SUM(Clicks)
- CTR = SUM(Clicks)/SUM(Impressions)*100
- % конверсий = SUM(Conversions)/SUM(Clicks)*100
- Стоимость конверсии=SUM(Cost)/SUM(Conversions)
Столбец “AvgPageviews” я вообще не использую
Процент отказов — очень сложный столбец из-за того, что Яндекс использует разную статистику исходя из каких-то дополнительных данных.
Если коротко, я использую формулу, именно она дает мне минимальные отклонения от того, что показывает Яндекс:
% отказов = SUM(Bounce_clicks)/(SUM(Clicks)/100).
где Bounce_clicks — количество отказных кликов в каждой из строк
Но этот вопрос выходит за рамки этой статьи :)
На данном этапе получаем следующий набор полей:
Визуализируем
Я делаю две страницы для каждого клиента: общая информация и информация по ключам.
Начнем с первой страницы — общей информации
Тут я размещаю:
- График с расходами по дням
- Таблицу со статистикой в разрезе дат
- Таблицу со статистикой в разрезе кампаний
- Дашборд со статистикой за вчера (клики, стоимость, цена клика)
Для начала в углу разместите диапазон дат, чтобы пользователи могли выбрать под себя даты:
Теперь добавим график с расходами:
Задаем следующие настройки:
Получаем такой график
Для таблицы с датами задаем такие настройки:
Для таблицы с кампаниями меняем параметр “Date” на название кампаний
Для дашбордов я использую сводку
На выходе у меня получается такая страница со статистикой:
Получаем статистику по ключевым словам:
Все то же самое, только теперь запрос будет выглядеть так:
import pandas_gbq
from yadirstat import yadirstat
x = yadirstat.yadirstat.criteria('AgAAAAАААаввадцоутпдцупдI',client-12247235,'2020-05-10','2020-07-15')
print(x)
pandas_gbq.to_gbq(x, 'YD_criteria.test', project_id='red-abstraction-21239254613',if_exists='replace', progress_bar=None)