Для получения данных из 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
а также добавил необходимые параметры:
После необходимых настроек, нажимаем на 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 Яндекс Метрики получить необходимые данные:
В качестве параметров передаются:
При загрузке набора данных из Logs API Яндекс Метрики:
Настройки, интеграции, примеры реальных задач, пошаговые инструкции
Спасибо, очень хорошая статья.
В Postman сохрани коллекцию и расшарь для импорта, если есть возможность?
Сохраню себе тоже
Анатолий, спасибо! Я все почистил в нем, возможно немного позже сделаю
Данные из Logs API в КХ ещё можно тянуть питоном.
Пример скрипта в документации к API – https://tech.yandex.ru/metrika/doc/api2/logs/fields/clickhouse-integration-docpage/
Сергей, спасибо за дополнение, но цель была получить данные без языков программирования. Если владеть Python, то возможности становятся очень большими
После получения токена и первого запроса в postman выдает ошибку:
“code”: 401,
“message”: “Неавторизованный пользователь”
В Яндексе что то изменилось и теперь токен как то по другому получать надо?
Не совсем по теме, но все же. Скажите, а есть инструкции по установке Clickhouse на локальную машину?
Александр, я не решал такую задачу. Вероятно Вам лучше обратиться на какой-нибудь профильный ресурс по Clickhous-у