Для получения данных из Logs API Яндекс Метрики необходимо выполнить последовательно несколько запросов:
- Создать приложение;
- Проверить возможность запроса с необходимым набором параметров;
- Запросить формирование выгрузки;
- Проверить статус выгрузки;
- Загрузить полученный набор данных.
В общей сложности на все описанные действия у вас может потребоваться до получаса, если вы ранее ничего подобного не выполняли, ну а если есть опыт создания приложений и формирования запросов, то гораздо быстрее. Что вы сможете сделать с выгрузкой? Во первых, это будут «сырые» данные о действиях посетителей на вашем сайте, которые помогут вам глубже погрузиться в анализ поведения пользователей. Во вторых, выгрузку можно импортировать в ClickHouse, где работать с ней выполняя необходимые запросы.
Для того, чтобы можно было работать с Logs API Яндекс Метрики нам понадобится приложение, давайте создадим его. Перейдите по ссылке: oauth.yandex.ru/client/new . Вам потребуется заполнить небольшую форму, в первой части которой необходимо указать общую информацию о приложении, а также выбрать платформы, где планируется его использование:
Для получения данных Logs API Яндекс Метрики описанным ниже методом нужно указать Веб-сервисы. Далее в нижней части страницы указываем права доступа для приложения:
Завершается создание приложения нажатием кнопки Создать приложение. После этого приложение созданы и вы получаете необходимую информацию для дальнейшей работы:
Следующим этапом установим программу через которую будем отправлять необходимые запросы, она называется Postman. На официальном сайте выбираете необходимую версию и выполняете ее загрузку:
Установка программы не вызывает сложностей я опущу ее, перейдем сразу к работе с приложением. При первом запуске приложения оно попросит создать учетную запись. Если Вы не хотите этого делать закройте окно и запустите приложение вновь, появится окно:
Выберите вариант обозначенный на скриншоте, на следующем окне нажмите Cancel. Теперь можно отправлять запросы к Logs API Яндекс Метрики. Какие нам понадобятся (ранее я уже упоминал их):
- Проверка возможность создания запроса;
- Запрос лога на создание для выгрузки;
- Получение данные о доступных логах;
- Загрузка данных.
Но перед этим мы должны получить токен для использования в запросах, для этого используется ссылка вида:
https://oauth.yandex.ru/authorize?response_type=token&client_id=abc
в которой abc нужно заменить на id приложения, который был выдан нам ранее (при создании приложения). Подставляете его в этот URL адрес и выполняете переход по ссылке в браузере, на предложение отвечаете Разрешить:
на вновь открывшейся странице отобразится необходимое значение токена. Внимание! На скриншоте выше вместо prometriki.demo будет название вашего аккаунта на Яндексе, а также другое название приложения (которое вы указали при его создании).
Возвращаемся к Postman, формируем и отправляем первый запрос, в котором указываем какие данные нам необходимо получить:
Я использовал тип запроса No Auth, метод GET, в строке URL указал
https://api-metrika.yandex.ru/management/v1/counter/НОМЕР_СЧЕТЧИКА/logrequests/evaluate
а также добавил необходимые параметры:
- oauth_token — авторизационный токен Яндекса;
- source — источник данных: визиты или просмотры;
- date1 — начало выборки;
- date2 — окончание выборки;
- fields — данные, которые мне необходимы, я указал все, что можно.
После необходимых настроек, нажимаем на Send и отображается результат:
Все отлично! Мы проверили допустимость нашего набора параметров для выгрузки из Logs API Яндекс Метрики. Теперь я отправляю запрос на создание выгрузки или «Запрос лога на создание для выгрузки»:
Нажмите на иконку с тремя точками справа от ранее отправленного запроса в Postman и выберите Duplicate… . Делаем мы это для того, чтобы не перенастраивать весь запрос, т.к. его необходимо лишь немного подправить, а именно из URL исключить фрагмент /evaluate , после чего URL должен быть вида:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?ПАРАМЕТРЫ
Отправляем второй запрос для того, чтобы Logs API Яндекс Метрики сформировал нам данные загрузки. Важный момент! Используем метод POST:
В ответ получаем информацию, что наш запрос создан:
Возможные значения параметра status есть в документации по Logs API Яндекс Метрики:
Опять дублируем ранее созданную вкладку (запрос №2), нажимаем на кнопку Params, отключаем все кроме oauth_token и изменяем метод на GET:
Этим запросом мы проверяем, что нам доступно для загрузки из Logs API Яндекс Метрики. Формирование данных занимает некоторое время, так, что не нужно нагружать сервер Яндекс Метрики своими запросами — наберитесь терпения. После того как будет создана выгрузка по результатам обработки запроса к Logs API Яндекс Метрики, вы получите сообщение после отправки запроса:
Теперь можно запросить данные и скачать их (например, для последующей загрузки в ClickHouse), сделать это можно с помощью запроса:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequest/request_id/part/0/download
В нем необходимо указать выделенные жирным шрифтом параметры. После part указывается часть (фрагмент) выгрузки, ее номер можно получить из блока parts, он выше на скриншоте. А значение для request_id берется из значения одноименного параметра в ответе сервера:
Полученные значения подставляем в запрос, указываем параметр oauth_token и отправляем запрос, только вместо Send выберите Send and Download, т.к. вы получите файл для загрузки:
Сейчас придется немного подождать, пока данные будут сформированы и загружены, в итоге вы получите файл с необходимыми данными. У меня при выполнении последнего запроса Postman сохранил полученные данные в файл с расширением json, но на самом деле данные будут получены в формате tsv.
Запросы №1, 2 и 4 можно выполнить просто сформировав необходимый URL адрес и перейдя по нему в браузере, но лучше для этого использовать или специальное ПО типа Postman, или другой инструмент, который может отправлять отправлять запросы методом POST и GET.
Подведем итог того, как через Logs API Яндекс Метрики получить необходимые данные:
- Отправляем запрос для проверки возможности создания набора данных с необходимыми параметрами:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests/evaluate?ПАРАМЕТРЫ - Отправляем запрос для формирования набора данных:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?ПАРАМЕТРЫ - Проверяем статус набора данных:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?oauth_token=ВАШ_ТОКЕН - Загружаем набор данных:
https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequest/request_id/part/0/download?oauth_token=ВАШ_ТОКЕН
В качестве параметров передаются:
- oauth_token — авторизационный токен Яндекса;
- source — источник данных: визиты или просмотры;
- date1 — начало выборки (дата);
- date2 — окончание выборки (дата);
- fields — данные, которые необходимо получить.
При загрузке набора данных из Logs API Яндекс Метрики:
- request_id — идентификатор набора данных (можно узнать выполнив запрос №3);
- номер части (0 в примере запроса №4) — идентификатор части набора данных (можно узнать выполнив запрос №3).