Contents
Краткий алгоритм подключения к Яндекс.Метрике из QlikView
- Заходим на сайт API Метрики.
- Переходим по ссылке OAuth-токен (создаем новое приложение).
- С помощью ID получаем токен.
- Формируем url, используя документацию из справочника ресурсов. В url будут входить:
- Параметры влияющие на выдачу данных;
- ID счетчика;
- Код токена.
- Проверяем в браузере работу url.
- Загружаем данные в QlikView.
Подробная инструкция подключения к Яндекс.Метрике из QlikView
Получаем OAuth-токен
Заходим на сайт API Метрики:
Переходим по ссылке «Получите OAuth-токен» и заполняем строки:
Находим Яндекс.Метрику:
Нажимаем «Подставить URL для разработки»:
Яндекс выдает Вам вот такую информацию для подключения:
Выбираем формат входных данных — JSON или XML
Нам нужен формат XML, так как QlikView не поддерживает JSON . Но для общего развития приведу пример внешнего вида форматов JSON и XML из википедии (JSON на Википедии).
Формат JSON выглядит вот так:
Формат XML:
Теперь у нас есть ID приложения, пароль. Мы знаем что нам нужен формат данных XML, но у нас еще нет токена (т.к. мы выбрали url для тестирования, то нам нужен отладочный токен). В справочной информации находим:
Переходим и видим ссылку:
Client_id – это наш ID приложения, который мы получили в самом начале. Итак, вбиваем наш id и получаем запрос:
https://oauth.yandex.ru/authorize?response_type=token&client_id=0f2************************95ed7
При открытии впервые, яндекс запросит разрешение на доступ к данным (нажимаем кнопку Подтвердить).
Далее яндекс выдает нам наш токен:
Что такое токен?
Сервисы Яндекса авторизуют приложения по токенам. Каждый токен — это цифро-буквенная последовательность, в которой зашифрована следующая информация:
- идентификатор учетной записи, к которой разрешен доступ;
- идентификатор приложения, которому разрешен доступ;
- набор прав (действий, доступных приложению).
Берем код счетчика из Яндекс.Метрики
Код счетчика располагается рядом с названием Ваших счетчиков:
Теперь у нас есть токен и id счетчика.
Справочник ресурсов Яндекс.Метрики
Следующий пункт инструкции по получению доступа к данным из яндекс-метрики «Изучите справочник ресурсов, в котором перечислены все объекты Метрики и описаны действия с ними».
Перейдя по ссылке находим следующее:
Для облегчения понимания принципа работы API перейдем в раздел справочника «Получение статистики» и внизу раздела найдем пример нужного нам URL:
Берем эту ссылку, вставляем id нашего счетчика и код нашего токена. Вбиваем строку в браузер и получаем данные счетчика в формате xml (отображаю данные из ссылки примера):
https://api-metrika.yandex.ru/stat/content/popular?id=2138128&oauth_token=ce43b3dd7ae8402c8f2183a602db8a80
Реализованная схема
Выше была реализована вручную схема, описанная в Документации API Яндекса:
Получение данных в QlikView
Используем проверенную ссылку с токеном и id счетчика (у вас своя ссылка):
https://api-metrika.yandex.ru/stat/content/popular?id=2138128&oauth_token=ce43b3dd7ae8402c8f2183a602db8a80
Вводим наш url:
Получаем данные из нашего url в формате xml:
Вот такой скрипт загрузки у нас автоматически сформировался:
Модель данных:
Данные из тестовой ссылки яндекса:
По моему сайту я получаю следующую картину:
Ну а дальше изучайте справочник ресурсов, создавайте приложения для анализа данных из Яндекс.Метрики или обращайтесь за помощью к профессионалам рынка (см. баннер).
Новый справочник для новой Яндекс.Метрики
Новый справочник по API сервиса Яндекс.Метрика.
Структура API
API включает в себя следующие разделы:
- API управления — позволяет управлять счетчиками, целями, фильтрами и другими объектами Яндекс.Метрики (создать счетчик, отредактировать его настройки, создать цель, выдать права доступа и т. п.).
- API отчетов:
- API отчетов — поддерживает все возможности отчетов Яндекс.Метрики: сегментацию, полный набор группировок и метрик, сравнение сегментов и т. п.
- API, совместимый с Google Analytics Core Reporting API — поддерживает все возможности Google Analytics Core Reporting API (v3), но набор группировок и метрик ограничен.
Виды отчетов
Полученные данные могут быть представлены в следующих формах:
Таблица:
Все уровни отчета и метрики представлены в виде таблицы.
Чтобы отображать данные в виде таблицы, используйте метод /stat/v1/data.
Drill down
Формирование одной ветви древовидного отчета.
Чтобы сформировать ветвь, используйте метод /stat/v1/data/drilldown.
По времени
Данные представлены с разбивкой по времени (например, по дням, неделям и месяцам). Форма удобна для построения графиков и отслеживания динамики.
Используйте метод /stat/v1/data/bytime.
Сравнение-Таблица
Сравнение сегментов, указанных в одном запросе. Данные представлены в виде таблицы.
Используйте метод /stat/v1/data/comparison.
Сравнение-Drilldown
Сравнение сегментов, указанных в одном запросе. Данные представлены в древовидном отчете.
Используйте метод /stat/v1/data/comparison/drilldown.
Формат отчетов
API возвращает ответы в кодировке UTF-8. Ответы имеют формат JSON или CSV.
Формат указывается в запросе после пути URL:
1 |
GET https://api-metrika.yandex.ru/stat/v1/data.csv?<counter_id>&<metrics>&<dimensions> |
Так как формат JSON является форматом, принятым по умолчанию, его можно не указывать:
1 |
GET https://api-metrika.yandex.ru/stat/v1/data?<counter_id>&<metrics>&<dimensions> |
Для QlikView необходимо использовать формат CSV. Для закачки JSON формата нужен либо специальный коннектор, почитать и поискать можно здесь:
- https://community.qlik.com/thread/46087
- https://community.qlik.com/docs/DOC-3129
- http://stackoverflow.com/questions/17719646/qlikview-to-display-json-data-of-mongo-db-in-qlikview
- Ну и в гугле, соответственно 🙂
Пример запроса для нового API в формате CSV, который можно использовать в QlikView
1 |
https://api-metrika.yandex.ru/stat/v1/data.csv?id=2138128&preset=tech_browsers&limit=5 |
QlikView преобразует запрос к API в код:
1 2 3 4 5 6 7 8 9 10 |
LOAD Браузер, [Версия браузера], [Полная версия браузера], Визиты, Отказы, [Глубина просмотра], [Время на сайте] FROM [https://api-metrika.yandex.ru/stat/v1/data.csv?id=2138128&preset=tech_browsers&limit=5] (txt, utf8, embedded labels, delimiter is ',', msq); |
Пример загрузки поисковых фраз из API YANDEX METRIKA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
//Календарь Let vStartDate = MakeDate(2015,6,1); Let vEndDate = Date(Today()); Let varMinDate = Num(MakeDate(2015,6,1)); Let varMaxDate = Num(Date(Today())); TempCalendar: LOAD $(varMinDate) + Iterno()-1 As Num, Date($(varMinDate) + IterNo() - 1) as TempDate AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate); Календарь: Load Date(TempDate) AS День, Date(TempDate,'YYYY-MM-DD') as date_format_metrika, week(TempDate) As Неделя, Month(TempDate) As Месяц, Year(TempDate) As Год, Day(TempDate) As НомерДень, Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as НеделяГод, Month(TempDate) & '-' & Year(TempDate) as МесяцГод, WeekDay(TempDate) as ДеньНедели Resident TempCalendar Order By TempDate ASC; Drop Table TempCalendar; //Загружаем поисковые фразы из API Яндекс Метрики LET token = 'AQAAAAAJ56ASbSDk957Wdfn0I3pgUY_3i2q_w'; [Поисковая фраза]: LOAD * Inline [ tempfieldfordrop ]; FOR i=1 to NoOfRows('Календарь') LET vDate = Peek('date_format_metrika',$(i)-1,'Календарь'); Concatenate([Поисковая фраза]) LOAD [Поисковая фраза], [Поисковая система], Визиты, Посетители, Отказы, [Глубина просмотра], [Время на сайте], '$(vDate)' as День FROM [https://api-metrika.yandex.ru/stat/v1/data.csv?preset=sources_search_phrases&date1=$(vDate)&date2=$(vDate)&id=44454156&oauth_token=$(token)] (txt, utf8, embedded labels, delimiter is ',', msq) Where [Поисковая фраза]<>'Итого и средние'; NEXT NoConcatenate Temptbl: LOAD RowNo() as ID, * RESIDENT [Поисковая фраза]; DROP Table [Поисковая фраза]; RENAME Table Temptbl to [Поисковая фраза]; DROP Field tempfieldfordrop From [Поисковая фраза]; //Считаем частотность слов TextMap: MAPPING LOAD * INLINE [ From, To Qlikview, QlikView ]; Words: LOAD ID, mapsubstring('TextMap',subfield(capitalize(keepchar(upper([Поисковая фраза]),'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ')),' ')) as Word RESIDENT [Поисковая фраза] ; INNER JOIN (Words) LOAD ID, Word RESIDENT Words WHERE len(trim(Word)) ; NoConcatenate Temptbl: LOAD ID, Lower(Word) as Word RESIDENT Words; DROP Table Words; RENAME Table Temptbl to Words; |
Leave a Reply