Не секрет, что QlikView обладает мощным интеграционным движком. Технология подключения к традиционным источникам данных, таким как Microsoft SQL Server, PostgreSQL, MySQL и прочие СУБД, достаточно широко освещена в руководствах к QlikView, блогах, различных книгах и учебниках. То же самое касается и подключения плоских файлов (Excel, CSV, TXT). Но сегодня хочу рассказать о  том, как подключиться к веб-источникам, на примере сервиса Яндекс Метрика.

НА ЗАМЕТКУ! Под веб-источникам мы понимаем некий веб-ресурс, который содержит необходимую для нас информацию, которую нам следует интегрировать в QlikView для последующего анализа.

Минутка теории: Способы подключения веб-источников в QlikView

Существует два основных способа получения данных в QlikView из веб-источников:

  1. Непосредственный запрос из QlikView к веб-ресурсу, в стиле запросов GET через API.

В зависимости от того, какие возможности выдачи информации предусмотрены в API веб-ресурса, такую информацию мы и получим. На практике, чаще всего информация поставляется после запроса в виде XML, JSON, KML (Google Maps), хотя бывают и иные варианты, те же CSV, TXT, иногда XLS и т.п.

  1. QlikView считывает код веб-страницы и по заданным параметрам «забирает» только необходимые данные.

Этот поход нужно использовать, когда информация находится в теле веб-страницы, скажем, курс валюты на главной странице www.yandex.ru. О том, как его реализовать, расскажу в отдельном посте.

Получаем данные из веб-источников в QlikView: метод прямого запроса

  1. Первоначальная подготовка

a) API

Если мы хотим забрать данные в QlikView из Яндекс Метрики и любого другого веб-ресурса, следует начать с изучения API данного ресурса. Описание API Яндекс.Метрики

Яндекс API

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

Как получить токен и настроить счетчик Яндекс достаточно хорошо описано в документации: . Будем считать, что счетчик Яндекс Метрики у Вас на сайте работает и токен вы получили по инструкции.

Следующий шаг – выбор формата данных. Для загрузки в QlikView выберем XML, т.к. для JSON интерпретации QlikView следует еще «обучить» (подобные реализации существуют в некотором количестве в Интернете, но с XML будет проще). Выбор формата XML или JSON осуществляется непосредственно в строке запроса.

В документации к API есть примеры тех или иных запросов к Яндекс Метрике, с примерным видом результатов. Так как эта статья – руководство для старта работы с данными Яндекс Метрики в QlikView, здесь мы будем рассматривать только базовые варианты настроек.

b) Скрипт в основе всего

Чтобы мы могли получить какие-либо данные в QlikView, следует создать соответствующий скрипт, который будет или загружать данные из источника, или их генерировать непосредственно в скрипте по заданным параметрам. Или даже делать оба действия сразу.

Итак, для того, чтобы получить данные для анализа из Яндекс Метрики, нам следует написать такой скрипт, который будет обращаться к Яндекс Метрике особым способом, где Яндекс Метрика будет «распознавать» данное обращение и «понимать» что это за запрос, после чего возвращать соответствующий XML массив необходимых данных.

  1. Загружаем данные Яндекс Метрики в QlikView

a) Запускаем QlikView, открываем редактор скрипта Ctrl+E, и начинаем кастовать заклинания.

Так у нас выглядит базовая строка запроса к API Яндекс Метрике:

http://api-metrika.yandex.ru/stat/traffic/summary?id=$(vMetricsID)&oauth_token=$(vMetricsKEY)&date1=20100101&date2=20100101]

Где vMetricsID – переменная QlikView, которая содержит в себе идентификатор счетчика метрики и vMetricsKEY – токен для доступа к счетчику.

Токен и ID счетчика, повторюсь, следует получать непосредственно в панели управления Яндекс Метрикой.

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

b) Создаем объект для внесения данных авторизации Яндекс.Метрики:

  • Закрываем на время редактор скрипта.
  • Добавляем новый лист в приложении. В верхнем меню Layout> Add sheet.
  • Далее нам нужно создать две переменные. В верхнем меню Settings> Variable Overview или Ctrl+Alt+V нажимаем Add. Указываем название vMetricsKEY. Точно также создаем vMetricsID.
  • Ок. Теперь создадим объект, который позволит нам вносить информацию в данные переменные. Кликаем на втором листе (который мы добавили в пункте №2) в любое место правой кнопкой мышки New Sheet Object> Input Box.
  • В настройках инпут бокса на основной вкладке будут видны две наших переменных, добавляем их в Displayed Variables.
  • Появился инпут бокс:Настройка авторизации Яндекс Метрики в QlikView
  • Вводим в соответствующие поля токен и идентификатор счетчика Яндекс Метрики.

c) Продолжим работу с скриптом

  • Переходим в редактор скрипта QlikView, Ctrl+E. В начале скрипта у нас есть некий набор текста, его не трогаем.
  • Ставим курсор в 11 строку под текстом, далее нажимаем кнопку внизу «Web files». Выбираем опцию «Internet files» и вводим в этом поле стандартный XML демо-запрос к Яндекс Метрике: http://api-metrika.yandex.ru/stat/traffic/summary?id=2138128, и переходим далее.
  • Видим, что результата нет. Это нормально, т.к. нам здесь требуется авторизация.
  • Что же, берем эту строку за основу и переделываем ее следующим образом:

http://api-metrika.yandex.ru/stat/traffic/summary?id=$(vMetricsID)&oauth_token=$(vMetricsKEY)&date1=20100101&date2=20100101]

где мы подставили соответствующие переменные в виде параметров строки запроса. QlikView вместо переменных в данную строку запроса подставит значения из них. Соответственно в Яндекс Метрику уйдет уже такой запрос, который система сможет обработать и вернет в QlikView XML массив данных.

НА ЗАМЕТКУ! Обратите внимание, что в строке также используются два параметра, date1 и date2, это «Дата с» и «Дата по» диапазона, за который мы запрашиваем данные из Яндекс Метрики в QlikView.  Здесь мы используем свои даты, с 01 января 2010 года по 01 января 2010 года, т.е. данные о посещениях сайта за один день. Указав иной диапазон, Яндекс Метрика вернет агрегированный массив информации за этот конкретный период времени. Обычно нас интересует информация о посещаемости сайта за более продолжительный период, скажем, за последние три года, за каждый день. В следующей части обзора я покажу, как получить такие данные, а сейчас же мы сфокусируемся только на том, как получить данные из Яндекс Метрики в QlikView. Все улучшения уже будем применять после.

  • Итак, ввели получившуюся строку в поле «Internet file» (уже обновленную строку с токеном и идентификатором счетчика). Жмем «Далее». Если авторизация прошла успешно, Вы увидите примерно следующее:QlikView File Wizard
  • Нажимаем «Finish» и переходим к скрипту. Увидим нечто подобное:

doc:

Разберем подробнее, что же мы сейчас получили.

Doc: — это стандартный синтаксис QlikView, указывающий на то, что мы создаем в оперативной памяти таблицу под названием Doc. Она будет содержать в себе поля, которые перечислены между операторами Load … From.

Все поля, которые у нас здесь есть – это поля, которые возвращает нам Яндекс Метрика. Отметим, что в скрипте некоторые поля имеют префикс as. Это означает примерно следующее – «взять» поле [data/row/wday] из источника данных и загрузить его в таблицу с названием wday. Таким же образом мы можем переименовать далее любое поле.

  • Уберем чехарду с датами. Обратите внимание, в нашем запросе в API Яндекс Метирики даты указываются в формате Яндекс Метрики, т.е. YYYYMMDD. QlikView же, по умолчанию воспринимает формат даты вида MMDDYYYY. Соответственно, для того, чтобы преобразовать формат данных, который будет использоваться далее в таблице, следует применить преобразование:
    • Укажем маску для даты окончания выборки date2. Для этого используем префикс в скрипте QlikView — date# (подробнее см. прилагаемый к QlikView Help): Date#(date2, ‘YYYYMMDD’) as date2,
    • В данном случае мы объявляем, что информация, содержащаяся в поле date2, должна восприниматься как дата вида YYYYMMDD, и название поля мы оставляем таким же, для этого указываем as date2. В таблицу QlikView данные после такой процедуры попадут уже в традиционном виде MMDDYYYY. Т.е. суть данной процедуры считать данные из поля в том виде, в котором они есть и транспонировать этот вид на тот, который применяется сейчас по умолчанию.
  • Сейчас никакие поля мы удалять не будем, и больше изменений в скрипте также пока не будем производить. Финальный скрипт с учетом нашего маленького преобразования будет выглядеть так:

d) Проверим, все ли получилось:

  • Если Вы указали диапазон дат С и ПО, в рамках которого есть статистика в счетчике, а также указали корректно идентификатор счетчика Яндекс Метрики и токен для доступа, QlikView сможет загрузить данные из Яндекс Метрики без проблем.
  • Нажимаем Ctrl+S, чтобы сохранить приложение.
  • Нажмимаем Ctrl+R, чтобы перезагрузить приложение. QlikView обратится в Яндекс Метрику и получит соответствующие данные, наложит преобразование на поле date2, сохранит все поля в таблице Doc. Просмотреть эту таблицу Вы сможете в модели данных, если откроете табличный просмотр в QlikView нажав Ctrl+T.

Во второй части учебного обзора работы с Яндекс Метрикой мы:

  • добавим две переменные, чтобы управлять диапазоном дат С и ПО без изменений в скрипте.
  • добавим ряд преобразований в скрипте и выражений контроля выполнения скрипта, чтобы получить информацию за длительный период времени за каждый день посещения сайта, в одной строке = данные за один день. Т.е. «научим» QlikView определять, какая «сейчас» дата, за какую дату у нас есть данные в QlikView из Яндекс Метрики, чтобы делать инкрементальные дозагрузки новых данных.
  • познакомимся с QlikView Data Files (.qvd) – специальный форматом хранения данных, который использует QlikView.

На этом сегодня все. При обнаружении ошибок или неточностей, прошу оставлять комментарии. Задавайте любые вопросы.

Спасибо.