Аналитика

Как работать с API Яндекс.Метрики с помощью языка R

57
6

Такие платформы, как Google Analytics и Яндекс.Метрика — инструменты, которые ежедневно используют в своей работе тысячи интернет-маркетологов и веб-аналитиков. Если вы продвигаете пару тройку-сайтов, думаю, достаточно веб-интерфейса этих сервисов. Когда же речь идёт о десятке сайтов, то для оперативной реакции на изменение поведенческих или других качественных показателей недостаточно функций и возможностей интерфейсов. К тому же приходится тратить много времени на переход из одного аккаунта в другой.

Наиболее эффективный способ организации работы с большим количеством аккаунтов предоставляет API — интерфейс прикладного программирования.

Около года назад я уже рассказывал о том, как получить данные из API Google Analytics. В этой статье мы разберёмся, как получить данные из Яндекс.Метрики. А о том, как собирать данные из большинства популярных сервисов вы можете узнать из моего онлайн-курса «Язык R в интернет-маркетинге», который стартует 1 ноября 2018 года. 

Какой софт понадобится?

Для работы с API Яндекс.Метрики вы можете использовать любой язык программирования, который поддерживает работу с HTTP-запросами. Но так как сейчас мы говорим о языке R, вам необходимо его скачать и установить.

Для комфортной работы с R рекомендую также установить бесплатную среду разработки RStudio.

Что такое Яндекс.Метрика?

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

Информация из официальной справки Яндекс.Метрики.

API-интерфейсы Яндекс.Метрики

У Яндекс.Метрики несколько API-интерфейсов:

  1. API управления. Предназначен для работы со счётчиками, фильтрами, сегментами, доступами и другими объектами аккаунта Яндекс.Метрики.
  2. API отчётов. Позволяет получать информацию о статистике посещений сайта и другие данные, не используя интерфейс Яндекс.Метрики.
  3. API, совместимый с Core API Google Analytics v3. По смыслу и функционалу схож с «API отчётов», но при формирования запроса вы можете использовать такое же название полей, как и при работе с COre API Google Analytics.
  4. Logs API. Интерфейс для загрузки сырых, не сгруппированных данных о посещениях сайта.

Как начать работу?

Для работы с API Яндекс.Метрики я написал пакет «rym», в контексте R. Пакет — это расширение, которое содержит функции и наборы данных, не доступные в базовой версии R. Cуществует более 10 000 таких пакетов. В основном, репозитории CRAN (Comprehensive R Archive Network), более 80 000 пакетов доступны на GitHub.

Есть официальная русскоязычная документация по работе с пакетом «rym». Также можно найти описание функций на английском.

Чтобы установить пакеты из основного репозитория CRAN, необходимо использовать базовую функцию install.packages:

install.packages("rym")

Также вы можете установить dev-версию пакета из GitHub. Для этого сначала необходимо установить пакет «devtools» и потом с его помощью — «rym». Используйте для этих действий код:

install.packages("devtools")
devtools::install_github("selesnow/rym")

Пакет достаточно установить один раз, но подключать нужно каждый раз при запуске нового сеанса работы с R. Для подключения используйте функцию library.

library(rym)

Теперь вы можете приступить к работе с API Яндекс.Метрики.

Авторизация в API

Процесс авторизации в API Яндекс.Метрики, как и в большинстве других популярных веб-сервисов, осуществляется по протоколу OAuth 2.0.

Для авторизации в Яндекс.Метрики с помощью «rym» вы можете использовать функцию rym_auth, которая принимает следующий набор аргументов:

  • login — логин пользователя, под которым вам доступен счётчик Яндекс.Метрики, из которого вы будете запрашивать данные;
  • new.user — признак того, что у пользователя обязательно нужно запросить разрешение на доступ к аккаунту (даже если пользователь уже разрешил доступ данному приложению). Получив этот параметр, Яндекс.OAuth предложит пользователю разрешить доступ приложению и выбрать нужный аккаунт Яндекса;
  • token.path — путь к папке, в которой будет создан файл для хранения ваших учётных данных для работы с API Яндекс.Метрики.

Процесс авторизации в пакете «rym» происходит следующим образом:

  1. При запуске любой функции пакета, изначально осуществляется поиск файла с учётными данными в папке, указанной в аргументе token.path. Имя файла состоит из login.rymAuth.RData, где login — значение, указанное в одноимённом аргументе. Таким образом, в ходе одной R-сессии вы можете работать со счётчиками, доступными под любым количеством пользовательских аккаунтов.
  2. Если ранее вы уже прошли процесс авторизации и дали разрешение на запись полученных учётных данных в локальный файл, то учётные данные подгрузятся оттуда.
  3. Если вы впервые проходите авторизацию или в аргументе token.path указали папку, в которой ранее не был сохранён файл с учётными данными, вас перенаправит в браузер, в котором необходимо разрешить доступ к данным вашего аккаунта. После этого вы перейдете на страницу, где будет сгенерирован семизначный код для подтверждения авторизации. Скопируйте и вставьте его в R-консоль в ответ на запрос «Enter authorize code:».
  4. Далее у вас запросят разрешение на создание полученных учётных данных в локальный файл «Do you want save API credential in local file token.path/login.rymAuth.RData for use it between R sessions?». На запрос необходимо ответить одним из таких значений: yesok или save.
  5. После чего в папке, указанной в аргументе token.path, сохранится файл login.rymAuth.RData и при следующих обращениях к API, в случае если вы укажите ту же папку в аргументе token.path, учётные данные для обращения к API будут загружены из файла  login.rymAuth.RData.

Как вы уже поняли поняли, не обязательно проходить авторизацию отдельно через функцию rym_auth. Данный процесс запустится при использовании любой из функций пакета «rym».

Работа с API управления

В пакете «rym» для работы с «API управления» созданы функции:

  • rym_get_counters — список доступных счётчиков Яндекс.Метрики;
  • rym_get_filters — список настроенных фильтров в счётчике;
  • rym_get_segments — список настроенных сегмнтов в счётчике Яндекс.Метрики;
  • rym_get_goals — список настроенных целей в Яндекс.Метрике;
  • rym_users_grants — список пользователей, у которых есть доступ к счётчику Яндекс.Метрики, с указанием уровня доступа.

Все эти функции принимают одинаковый набор аргументов:

  • counter — Id счётчика Яндекс.Метрики;
  • login — имя пользователя, под которым доступен нужный счётчик Яндекс.Метрики. Используется при авторизации и при поиске файла, в котором хранятся учётные данные пользователя;
  • token.path — путь к папке, в которой хранится файл с учётными данными.

Пример работы с API управления:

При использования кода, замените «логин» на логин пользователя в Яндексе, у которого есть доступ к нужному вам счётчику, а «0000000» — на Id нужного вам счётчика.

library(rym)

# получить список счётчиков

selesnow.counters <- rym_get_counters(login      = "<логин>",

                                     token.path = "metrica_token")
# получить список целей

my_goals <- rym_get_goals(counter    = <0000000>,

                         login = "<логин>",

                         token.path = "metrica_token")
# получить список фильров

my_filter <- rym_get_filters(counter    = <0000000>,

                            login = "<логин>",

                            token.path = "metrica_token")
# получить список сегментов

my_segments <- rym_get_segments(counter    = <0000000>,

                               login = "<логин>",

                               token.path = "metrica_token")
# получить список пользователей счётчика
users <- rym_users_grants(counter    = <0000000>,
                         login = "<логин>",
                         token.path = "metrica_token")

Работа с API отчётов

С помощью этого API-интерфейса вы можете запрашивать из счётчика Яндекс.Метрики любые статистические данные о посещении ваших сайтов.

Для работы с «API отчётов» в «rym» предназначена функция rym_get_data. А вот аргументы, которые она принимает:

  1. direct.client.logins — логины клиентов Яндекс.Директа, через запятую. Могут использоваться для формирования отчета «Директ-расходы».
  2. counters — идентификаторы счетчиков, через запятую.
  3. metrics — список метрик, разделенных запятой. Лимит: 20 метрик в запросе. Актуальный список доступных метрик есть в официальной справке.
  4. dimensions — список группировок, разделенных запятой. Лимит: 10 группировок в запросе. Актуальный список группировок можно посмотреть в официальной справке.
  5. filters — фильтрация данных. Лимит: количество уникальных группировок и метрик — до 10; количество отдельных фильтров — до 20; длина строки в фильтре — до 10 000 символов.
  6. sort — поля, по которым будут отсортированы данные.
  7. date.from и date.to — период отчёта можно задавать статическими датами в формате ГГГГ-ММ-ДД или относительными значениями: todayyesterdayndaysAgo.
  8. accuracy — точность вычисления результата. Позволяет управлять семплированием (количеством визитов, использованных при расчете итогового значения). Этот параметр может принимать несколько значений:
  • low — возвращает быстрый результат на основе сокращенной выборки данных;
  • medium — возвращает результат на основе выборки, сочетающей скорость и точность данных;
  • high — возвращает наиболее точное значение, используя наибольшую выборку данных. Этот режим может потребовать дополнительное время и замедлить обработку запроса;
  • full — возвращает все данные.

Также этот параметр может принимать числовое значение из полуинтервала (0,1]:

  • 1 — отсутствует семплирование (соответствует значению full);
  • 0,1 или 0,01 — доля возвращаемых данных (10%, 1%). Любое значение (например, 0,42) будет округляться до ближайшей степени числа 10.
  1. include_undefined — включает в ответ строки, для которых значения группировок не определены. Влияет только на первую группировку. По умолчанию выключено.
  2. lang — язык, на котором будет представлен отчёт, по умолчанию «ru».
  3. timezone — часовой пояс в формате ±hh:mm в диапазоне [-23:59; +23:59] (знак плюса нужно передавать как %2B), в котором будет рассчитан период выборки запроса и связанные с датой и временем группировки. По умолчанию используется часовой пояс счетчика.
  4. pretty — задает форматирование результата. Чтобы использовать форматирование, укажите значение true.
  5. login — имя пользователя, под которым доступен нужный счётчик Яндекс.Метрики. Используется при авторизации и поиске файла, в котором хранятся учётные данные данного пользователя.
  6. token.path — путь к папке, в которой хранится файл с учётными данными.

Пример работы с интерфейсом «API отчётов»:

reporting.api.stat <- rym_get_data(counters   = "00000000,11111111",
                                  date.from = "2018-08-01",
                                  date.to = "yesterday",
                                  dimensions = "ym:s:date,ym:s:lastTrafficSource",
                                  metrics = "ym:s:visits,ym:s:pageviews,ym:s:users",
                                  sort = "-ym:s:date",
                                  login = "<логин>",
                                  token.path = "metrica_token",
                                  lang = "en")

Работа с Logs API

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

Информация из официальной справки API Яндекс.Метрики.

Данные из Logs API можно получить по просмотрам («хитам») и визитам («сессиям»).

При работе с пакетом «rym» неагрегированные данные можно запрашивать с помощью функции rym_get_logs, которая принимает следующие параметры:

  • counter — Id счётчика Яндекс.Метрики;
  • date.from и date.to — период отчёта, даты в формате YYYY-MM-DD. Дата окончания не может быть сегодняшним днём;
  • source — источник логов. Допустимые значения: «hits» и «visits»;
  • fields — список полей через запятую, актуальный список полей можно получить из официальной справки. Для визитов и просмотров поля отличаются;
  • login — имя пользователя, под которым доступен нужный счётчик Яндекс.Метрики. Используется при авторизации и при поиске файла, в котором хранятся учётные данные пользователя;
  • token.path — путь к папке, в которой хранится файл с учётными данными.

Пример работы с «Logs API»:

logs.api.stat      <- rym_get_logs(counter    = 00000000,
                                  date.from = "2018-08-01",
                                  date.to = "2018-08-05",
                                  fields = "ym:s:date,
                                                ym:s:lastTrafficSource,
                                                ym:s:referer",
                                  source = "visits",
                                  login = "<логин>",
                                  token.path = "metrica_token")

Работа с API, совместимым с Core API Google Analytics

API совместим с Google Analytics Core Reporting API (v3) и позволяет выполнять такие операции:

  • получать информацию о посещаемости сайта и другие данные;
  • интегрировать данные Яндекс.Метрики с приложениями, разработанными с учетом особенностей Google Analytics Core Reporting API(v3);
  • использовать привычные параметры запросов при сборе статистики, если ранее вы работали с Google Analytics Core Reporting API (v3).

Информация из официальной справки API Яндекс.Метрики.

Отсюда вывод — API будет удобен тем, кто привык работать с Core API Google Analytics. В пакете «rym» для этого предназначена функция rym_get_ga.

Аргументы функции rym_get_ga:

  1. start.date  и end.date — отчётный период. Вы можете указывать даты в формате YYYY-MM-DD или использовать относительные временные значения: todayyesterdayNdaysAgo.
  2. counter — номер счетчика, данные которого необходимо получить. В отличие от предыдущих функций, в данном случае перед номером счетчика необходимо указать префикс ga:.
  3. dimensions — группировки объединяют данные по критериям. Если по указанной группировке данные не были получены, возвращается значение «not set» для тех категорий, которые не определились. В состав одного запроса может входить не более семи группировок.
  4. metrics — метрики позволяют получать данные о статистике посещаемости и активности пользователей сайта. В состав одного запроса может входить не более десяти метрик.
  5. sampling.level — используйте параметр для указания уровня семплирования (количества визитов, использованных при расчете итогового значения). Допустимые значения:
  • HIGHER_PRECISION — возвращает максимально точное значение, используя наибольшую выборку данных. Этот режим может потребовать дополнительное время и замедлить обработку запроса;
  • FASTER — возвращает быстрый результат на основе сокращенной выборки данных;
  • DEFAULT — возвращает результат на основе выборки, сочетающей скорость и точность данных;
  • login — имя пользователя, под которым доступен нужный счётчик Яндекс.Метрики. Используется при авторизации и при поиске файла, в котором хранятся учётные данные пользователя;
  • token.path — путь к папке, в которой хранится файл с учётными данными.

Пример работы с API Яндекс.Метрики, совместимым с Core API Google Analytics (v3):

ga.api.stat        <- rym_get_ga(counter    = "ga:0000000",
                                dimensions = "ga:date,ga:source",
                                metrics = "ga:sessions,ga:users",
                                start.date = "2018-08-01",
                                end.date = "2018-08-05",
                                sort = "-ga:date",
                                login = "<логин>",
                                token.path = "metrica_token")

Выводы

Мы рассмотрели работу со всеми API, доступными на данный момент в Яндекс.Метрике, а также познакомились со всеми функциями пакета «rym» — интерфейсом взаимодействия между R и Яндекс.Метрикой. С помощью этих инструментов вы можете эффективно организовать работу даже, если одновременно продвигаете десятки сайтов.

Если хотите узнать о том, как работать с API таких систем как Яндекс.Директ, Facebook, MyTarget и множества других рекламных сервисов и платформ веб-аналитики, вам будет полезна подборка статей по этой теме в нашем блоге.

Напомню, что 1 ноября этого года стартует мой авторский онлайн-курс «R для интернет-маркетинга». Полученные знания помогут вам автоматизировать большую часть рутинной, повседневной работы интернет-маркетологов и веб-аналитиков.

Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

Комментарии (11 )

  1. 0
    месяц назад

    Алексей, добрый день! Я к вам с вопросом возможно не совсем по теме, но свежих статей на тему подключения Яндекс. Директа в Power BI у вас еще не вышло, поэтому задам вопрос тут. 

    В Июне 2018 года вышло обновление в API Директа, появились параметры для целей и моделей атрибуции.

    Goals — идентификаторы целей Яндекс.Метрики, по которым нужно получить статистику;

    AttributionModels — модели атрибуции, используемые при расчете данных по целям.

    Как можно выгружать поля Директа в Power BI относящиеся к определенным целям?

    Например, получить параметр Conversions (количество целевых визитов) в рамках достижения цели 1234567.

    Подробнее об обновлении API Директа тут:

    https://tech.yandex.ru/direct/doc/reports/report-format-docpage/



    • 0
      Александра Кравченко
      месяц назад

      Готово, обновите пакет с помощью devtools::install_github("selesnow/ryandexdirect")

      Далее подробности релиза и примеры кода тут.


      • 0
        Алексей Селезнёв
        18 дней назад

        Добрый вечер, Алексей, а я могу от вас получить комментарий к моему вопросу ниже?

        Спасибо!

      • 0
        Алексей Селезнёв
        18 дней назад

        Когда ввожу данный код

        library(ryandexdirect)

        attributions_report <- yadirGetReport(ReportType = "ACCOUNT_PERFORMANCE_REPORT",

                                              DateRangeType = "LAST_MONTH",

                                              FieldNames = c("Date",

                                                                    "Clicks",

                                                                    "Impressions",

                                                                    "Conversions"),

                                               Goals = c(12345678),

                                               AttributionModels = c("LC"),

                                               Login = "xxxxxxx",

                                               TokenPath = "XXXXXXXXXXXXXXXXXXX")

        в Power BI в поле R script, то получаю в браузере окно с цифровым кодом для получения токена. Вопрос, куда этот код вводить? 

        Power BI пишет, что идет установка коннектора R.

        • 0
          Александра Кравченко
          месяц назад

          Добрый день, извиняюсь за долгий ответ, смотрите в чём дело, при первом обращении к API через пакет ryandexdirect открывается браузер для прохождения процесса авторизации, в браузере генерируется код для подтверждения авторизации который надо ввести в консоль R, но такая возможность есть только при запуске R в интерактивном режиме, т.е. в среде разработки RStudio, а Power BI запускает выполнение R скриптов в пакетном режиме, поэтому у вас нет возможности подтвердить авторизацию.

          Что вам надо сделать:

          1. В аргумент TokenPath полный а не условный путь к папаке где будет сохранён файл с полученными учётными данными для работы с API, пример полного пути "C:/r/token", пример условного пути "token".

          2. Первый раз выполнить весь код в RStudio, и пройти процесс авторизации, при этом в папке которую вы укажете в аргументе TokenPath будет создан файл в котором и будут хранится ваши учётные данные для работы с API.

          3. Перенести этот код в Power BI для загрузки данных.

          Дело в том, что когда вы указываете условный а не полный путь в аргументе TokenPath при старте скрипта в Power BI и RStudio рабочей директорией являются разные папаки, и скрипт не надо нужный файл с учётными данными.

          Более подробно про аргументы TokenPath и Login для работы с учётными данными в ryandexdirect можно почитать в этом релизе.

    • 0
      Александра Кравченко
      месяц назад
      Добрый день, совершенно верно, эти параметры 8 июня были добавлены в сервис Reports, но у меня просто не дошли руки добавить их в функционал пакета ryandexdirect, постараюсь сегодня это исправить и в этой ветке отпишусь, плюс будет релиз на GitHub сразу как доработка будет внедрена.
  2. 0
    2 месяца назад

    Алексей, спасибо за ценную информацию!

    А упомянутый курс будет платный/бесплатный? И в каком формате?

    • 0
      Sergey Luzgin
      месяц назад

      Добрый день, курс будет платный, доступен он будет на https://needfordata.ru

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


      Программа курса:


      Модуль 1: Введение в R.

      • История, возможности, преимущества и недостатки языка R. 
      • Загрузка и установка языка R и среды разработки RStudio. 
      • Области применения R скриптов в Power BI. 
      • Знакомство со средой разработки RStudio. 
      • Основные классы объектов в R 
      • Векторы в R, что такое вектор, как обращаться к элементам вектора, основные типы данных в R. 
      • Data frame, основной класс объектов в R, как выбирать столбцы, строки, проводить расчёты. 
      • List - Списки. 
      • Работа со строками в R. 
      • Манипуляция с данными в R, пакеты dplyr, data.table, tidyr, sqldf. 
      • Работа с датами и временем в R, пакет lubridate. 
      • Условные конструкции, Циклы и функции в R. 
      • Рекомендации по оформлению кода и обработка ошибок. 

      Модуль 2: Загрузка данных в Power BI, из API рекламных площадок и парсинг веб сайтов с помощью языка R.

      • Что такое API. 
      • Загрузка данных из Google AdWords. 
      • Как получить доступ к API Google AdWords. 
      • Введение в API AdWords. 
      • Как получить данные из API Google AdWords с помощью пакета RAdwords. 
      • Как получить данные из API Google AdWords в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из Яндекс Директ. 
      • Введение в сервис Reports. 
      • Как получить данные из API Яндекс Директ с помощью пакета ryandexdirect. 
      • Как получить данные из API Яндекс Директ в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из Facebook. 
      • Как получить доступ к API Facebook. 
      • Введение в API Facebook. 
      • Как получить данные о рекламных кампаниях из API Facebook с помощью пакета rfacebookstat, 
      • Как получить данные из API Facebook в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из Вконтакте. 
      • Как получить доступ к API Вконтакте. 
      • Как получить данные из API Вконтакте с помощью пакета rvkstat. 
      • Как получить данные из API Вконтакте в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из MyTarget. 
      • Как получить данные из API MyTarget с помощью пакета rmytarget. 
      • Как получить данные из API MyTarget в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из Google Analytics. 
      • Введение в API Google Analytics. 
      • Как получить данные из Core API Google Analytics с помощью пакета RGA. 
      • Как получить данные из Multi-Channel Funnels Reporting API с помощью пакета RGA. 
      • Как получить данные из Real Time Reporting API с помощью пакета RGA. 
      • Как получить данные из API Google Analytics в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из API Яндекс Метрики. 
      • Пакет rym 
      • API управления Яндекс Метрики 
      • API отчётов Яндекс Метрики 
      • Logs API Яндекс Метрики 
      • API Яндекс Метрики совместимый с Core API Google Analytics v3 
      • Загрузка данных из API Яндекс Метрики в Power BI с помощью коннектора “R скрипт”. 
      • Загрузка данных из Google SearchConsole и Google Trends. 
      • Парсинг сайтов с помощью пакета rvest. 
      • Отправка HTTP запросов из R, пакет httr. 

      Модуль 3: Работа с данными загруженными из API рекламных систем и парсинга сайтов.

      • Работа с Google Таблицами из R. 
      • Визуализация данных с помощью пакета ggplot2. 
      • Отправка и чтение данных из СУБД (MySQL, PostgreSQL, SQLite, Google BigQuery). 
      • Отправка почты с помощью пакета mailR. 
      • Настройка запуска скриптов по расписанию, пакет taskscheduleR.
  3. 0
    2 месяца назад

    Наш набор модулей для интернет-магазина на Magento

    • SEO Suite Ultimate version - решает кучу болезней Magento. Есть автогенерация мета тегов.
    • Фильтры - используем модуль Manadev. Работает но сложный в установке и настройке. Без программиста и поддержки настроить не получится. В ближайшее время хочу протестировать решение от Amasty
    • Full Page Cache - мы используем решение от Amasty
    • Automatic Related - от Аmasty
    • Решение для сортировки товаров - использовали решение Amasty но пришлось дорабатывать.


Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое

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