Изменения

Перейти к: навигация, поиск

R:Google Analytics

10 050 байтов добавлено, 08:27, 6 августа 2014
м
Общее описание
== Общее описание ==
На данный момент , несмотря на все многообразие, в официальном репозитории CRAN нет пакетов для работы с API Google Analytics <ref>Возможно в скором времени там появится, по крайней, мере два пакета: <code>rga</code> и <code>ganalytics</code>.</ref>Однако на сторонних ресурсах, тем не менее, но в сети можно обнаружить три рабочих решения: [https://code.google.com/p/r-google-analytics/ <code>RGoogleAnalytics</code>], [http://skardhamar.github.io/rga/ <code>rga</code>] и , [https://github.com/jdeboer/ganalytics <code>ganalytics</code>]и [https://bitbucket.org/unikum/rga RGA]. <ref>Пакеты <code>rga</code>, <code>ganalytics</code> и <code>RGA</code> в ближайшее время могут появиться и в CRAN, работы в этом направлении уже ведутся.</ref>
Сравнительная таблицапактов для работы с API Google Analytics:
{| class="wikitable sortable" width="800px"
! width="20%" | [https://github.com/skardhamar/rga rga]
! width="20%" | [https://github.com/jdeboer/ganalytics ganalytics]
! width="20%" | [https://bitbucket.org/unikum/rga RGA]
|-
! colspan=4 5 | Общая информация|-| Размещение| style="text-align:center" | [https://code.google.com/p/r-google-analytics/ Google Code]| style="text-align:center" | [https://github.com/skardhamar/rga GitHub]| style="text-align:center" | [https://github.com/jdeboer/ganalytics GitHub]| style="text-align:center" | [https://bitbucket.org/unikum/rga Bitbucket]
|-
| Дата публикации
| style="text-align:center" | 27.11.2012
| style="text-align:center" | 25.05.2013
| style="text-align:center" | 3.06.2014
|-
| Дата последней стабильной версии
| style="text-align:center" | 9.09.2013<ref>В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.</ref>
| style="text-align:center" | 251.0506.2014<ref>Дата последнего коммита последней правки на данный момент, т.к. стабильные выпуски релизы данного пакета отсутствуют.</ref>| style="text-align:center" | 244.0508.2014<ref>Дата последнего коммита последней правки на данный момент, т.к. стабильные выпуски релизы данного пакета отсутствуют.</ref>| style="text-align:center" | 5.08.2014<ref>Дата последней правки на данный момент, т.к. релизы данного пакета отсутствуют.</ref>
|-
| Лицензия
| style="text-align:center" | Apache 2.0
| style="text-align:center" | -GPL2
| style="text-align:center" | MIT
| style="text-align:center" | GPL2
|-
| Зависимости
| style="text-align:center" | <code>RCurl</code>, <code>rjson</code>, <code>lubridate</code>
| style="text-align:center" | <code>bitopsRCurl</code>, <code>RCurlhttr</code>, <code>jsonlite</code>, <code>lubridate</code>, | style="text-align:center" | <code>httr</code>, <code>plyr</code>, <code>stringr</code>, <code>jsonlite</code>, <code>httpuv</code>| style="text-align:center" | <code>httrRCurl</code>, <code>plyrhttr</code>, <code>stringrjsonlite</code>
|-
! colspan=4 5 | Авторизация
|-
| Авторизация по логину и паролю
| style="text-align:center" | +
| style="text-align:center" | -
| style="text-align:center" | -
| style="text-align:center" | -
|-
| Авторизация [https://developers.google.com/accounts/docs/OAuth2OAuth2]<ref>Авторизация по Client ID и Client secret, полученным в [[API Consolehttpshttps://console.developers.google.com|API Console]].</ref>| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | +
|-
! colspan=4 5 | Доступ к API
|-
| Доступ к [https://developers.google.com/analytics/devguides/reporting/core/v3/ API базовых отчётов]| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | +
|-
| Доступ к APIотчётов[https://developers.google.com/analytics/devguides/reporting/mcf/v3/ API отчётов<br />многоканальных последовательностей]
| style="text-align:center" | -
| style="text-align:center" | +
| style="text-align:center" | -
| style="text-align:center" | +
|-
| Доступ к API<br [https:/>/developers.google.com/analytics/devguides/config/mgmt/v3/ API конфигурации]<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | -
| style="text-align:center" | +
|-
| Пакетная обработка запросов<ref>Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.</ref>
| style="text-align:center" | +
| style="text-align:center" | +
| style="text-align:center" | +
|}
В плане подробности документацииПомимо технических различий пакеты различаются еще рядом параметров, бесспорнов частности методологией организации кода, выигрывает пакет <code>ganalytics</code>. Он обладает довольно подробным <code>README</code> файлом, описывающим практически всю функциональность пакета. Помимо этого, пакет также содержит полную документацию всех документированностью функций, которая поставляется вместе с пакетом. Пакет <code>rga</code> обладает <code>README</code> файлом, описывающем лишь основы работы с пакетом общей дружелюбностью и не включает простотой в себя описание ряда возможностей использовании пакета. При установке пакета документация содержит только краткое описание инициализации пакета. Документация пакета <code>RGoogleAnalytics</code> включает файл README, в котором пошагово описан процесс работы с пакетом, включающим весь функционал.
С точки зрения внутренней организации кода пакеты можно охарактеризовать следующим образом. Так, пакет <code>RGoogleAnalytics</code> основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC<ref>RC - (Reference classes).</ref>. Пакет <code>rga</code> целиком основан на использовании RC. Пакет <code>ganalytics</code> основан на использовании S4 классов и методов. , что обеспечивает более точный контроль над вводимыми аргументами <ref>Получить обобщённое представление об принципах и реализации ООП системе в R можно в [http://adv-r.had.co.nz/OO-essentials.html#rc этомздесь] материале</ref>. При определенных различиях в реализации доступа к GA API, все пакеты, тем не менее, основываются на функционале пакета <code>httr</code>.
== Установка необходимых пакетов ==В плане подробности документации, бесспорно, выигрывает пакет <code>ganalytics</code>. Он обладает довольно подробным <code>README</code> файлом, расположенном на странице проекта [https://github.com/jdeboer/ganalytics ganalytics], и описывающим практически весь функционал пакета. Помимо этого, пакет также содержит полную документацию всех функций, которая поставляется вместе с пакетом. Пакет <code>rga</code> обладает <code>README</code> файлом, описывающем лишь основы работы с пакетом и не включает в себя описание ряда возможностей пакета. Справка по функциям, доступная при установке пакета, содержит только краткое описание процедуры получения доступа к GA API и описание структуры запроса к API. Другие полезные функции, в частности, получение списка доступных профилей GA-аккаунта, приходится искать вслепую. Документация пакета <code>RGoogleAnalytics</code> также имеет файл <code>README</code>, в котором пошагово описан процесс работы с пакетом, включающим весь функционал.
Устанавливаем и подключаем В плане простоты использования, в свою очередь. лидирует пакет {{r-package|devtools}}<code>rga</code>. В отличие от <code>ganalytics</code>, для доступа к пакет <code>rga</code> позволяет указывать метрики, измерения, узкие сегменты и фильтры в виде аргументов сразу, в одной функции, что упрощает понимание структуры запроса и сегмента, и позволяет обрабатывать множество однотипных сегментов (например, страниц сайта) в цикле или <code>[https:a-z]pply<//githubcode>-функциях.comТакже <code>ganalytics</ github] (требуется только code> не имеет внутренних инструментов получения ID профилей, а их получение из web-интерфейса Google Analytics с последующей вставкой в первый раззапросы <code>ganalytics</code> трудоемко и, самое главное, неинтуитивно. <code>RGoogleAnalytics</code>, несмотря на достаточно подробную документацию и достаточный для установки пакета {{r-package|rga}}):полноценной работы функционал, обладает несколько непрозрачной и неочевидной структурой запросов к GA API.
{{r-code|code=<nowiki>> install.packages("devtools")> library(devtools)</nowiki>}}= Получение ключей для доступа к API Google Analytics ==
Устанавливаем пакет Прежде чем приступить к работе с пакетами, предназначенными для работы с Google Analytics API, необходимо создать новое приложение в [https://console.developers.google.com Google Developers Console] и получить '''Client ID''' (идентификатор клиента) и '''Client secret''' (секретный ключ клиента) для доступа к API Google Analytics. Не смотря на то, что некоторые пакеты, например <code>rga</code>:, предоставляют ключи доступа, сгенерированные автором пакета, мы всё же рекомендуем получить собственные ключи, т.к. сторонние ключи могут быть в любой момент отозваны автором.
{{r-code|code=<nowiki>> install_github("rga", "skardhamar")</nowiki>}}Пошаговая инструкция приведена ниже:
== Организация # Создание нового проекта (можно пропустить, если проект уже создан):#* Откройте страницу https://console.developers.google.com/project;#* В левой верхней части страницы нажмите на красную кнопку с надписью '''Create Project''';#* Во всплывающем окне в поле '''PROJECT NAME''' введите название проекта;#* Подтвердите создание проекта, нажав на кнопку '''Create'''.# Активация доступа к API ==Google Analytics:#* Выберите проект в списке проектов на странице https://console.developers.google.com/project;#* На боковой панели слева выберите пункт '''APIs & auth''';#* на вкладке '''APIs''' активируйте '''Analytics API''', нажав на кнопку с надписью `OFF` (убедитесь, что вместо надписи `OFF` появилось `ON`).# Создание нового приложения:#* В боковой панели слева выберите пункт '''APIs & auth''', подпункт '''Credentials''';#* В левой части страницы нажмите на кнопку с надписью '''Create new Client ID''';#* Во всплывающем окне выберите пункт '''Installed application''' в списке '''APPLICATION TYPE''' и пункт '''Other''' в списке '''INSTALLED APPLICATION TYPE'''.#* Подтвердите создание приложения, нажав на кнопку с надписью '''Create Client ID'''.# Получение Client ID и Client secret:#* Выберите проект в списке проектов на странице https://console.developers.google.com/project;#* В боковой панели слева выберите пункт '''APIs & auth''', подпункт '''Credentials''';#* В таблице с названием '''Client ID for native application''' скопируйте значения полей '''Client ID''' и '''Client secret'''.
Загрузка пакета доступа к GA (требуется только Теперь вы в начале работы при запуске новой R-сессии):любой момент можете вернуться на страницу '''Credentials''' и узнать '''Client ID''' и '''Client secret'''.
{{r-code|code== Пакет <nowikicode>> library(rga)</nowikicode>}}==
Запрет верификации SSL-соединения (требуется только для ОС Windows, чтобы избежать ошибок при аутентификации):=== Установка пакета ===
{{r-Исходный код пакета <code|code=>rga<nowiki>/code> options(RCurlOptions = list(capath = systemрасполагается на [https://github.file("CurlSSL"com github], "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))поэтому установить его можно с помощью функции <code>install_github</nowikicode>из пакета {{r-package|devtools}}:
Для создания ключа аутентификации потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер{{r-code|code=<refnowiki>Аргумент <code>where</code> с указанием пути и имени файла.devtools::install_github("rga", "skardhamar")</refnowiki>.}}
{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}Авторизация ===
Видим, что в директории проекта появился файл Перед началом работы необходимо загрузить пакет <code>ga.rga</code><ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь (требуется только в начале работы при повторном использовании этой команды будет осуществляться проверка наличия файла <code>ga.rga</code> в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.запуске новой R-сессии):
Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:{{r-code|code=<nowiki>> library(rga)</nowiki>}}
# Необходимо создать проект на странице https://console.developers.google.com/project;# На вкладке APIs & auth на вкладке APIs надо активировать Для предоставления доступа к данным Google Analytics API, нажав на кнопку, где написано из пакета <code>OFFrga</code>неободимо пройти процедуру авторизации.# Во вкладке APIs & auth перейти во вкладку CredentialsДля этого используется функция <code>rga.open</code>, где выбрать Create new Client ID;# При создании Client ID выбрать APPLICATION TYPEкоторая принимает следующие аргументы: Installed application, INSTALLED APPLICATION TYPE: other, и нажать create;# В результате будет Client ID = и Client secret = ;# На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;
Создаем постоянный ключ (откроется браузер* <code>instance</code> - имя переменной, где надо которая будет выбрать свой почтовый аккаунт содержать информацию о доступе к APi Google Analytics;* <code>where</code> - путь и подтвердить вход в API, тогда выдадут код/или имя файла, который надо будет вставить в консоль):использоваться для кэширования информации;* <code>client.id</code> - ID клиента;* <code>client.secret</code> - секретный ключ.
{{r-code|code=<nowiki>> rga.open(instance = "ga"Для получения токена доступа потребуется переход в браузер, clientподтверждение доступа и копирование код доступа в консоль.id = "", client.secret = ""Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер<ref>Аргумент <code>where = "api</code> с указанием пути и имени файла.rga")</nowikiref>}}.
Пояснения по значениям аргументов:{{r-code|code=<nowiki>> rga.open(instance = "ga", where = "ga.rga")</nowiki>}}
* Видим, что в директории проекта появился файл <code>clientga.idrga</code> необходимо вставить сюда Client ID;* <ref>Можно указать любой удобный путь и имя файла.</ref>. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла <code>clientga.secretrga</code> необходимо вставить сюда Client в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла. Второй вариант аутентификации с использованием собственных ключей доступа: {{r-code|code=<nowiki>> rga.open(instance = "ga", client.id = "XXXXXX", client.secret= "XXXXXXX", where = "ga.rga")</nowiki>}} После выполнения данной команды будет открыт интернет браузер со страницей запроса подтверждения разрешения на доступ к данным Google Analytics. Необходимо авторизоваться под своей учётной записью Google и подтвердить разрешение на доступ к данным Google Analytics. Отметим, что пакет `RGA` запрашивает доступ '''только для чтения''' данных.
После успешной аутентификации информацию о установленном подключении можно получить с помощью команды <code>ga$status()</code> или более подробную информацию <code>ga$show()</code>.
=== Получение данных === Пакет <code>rga</code> позволяет получить доступ к различным API Google Analytics. Поскольку объекты, формируемые пакетом <code>rga</code>, относятся к классу <code>refClass</code>, что не является широко распространённой системой в данный момент, то ниже мы проведём небольшой обзор доступных функций и методов.
Получить общую информацию о всех доступных методах, доступных для класса классе <code>rga</code> можно с помощью команды функции <code>ga$exploregetRefClass()</code>:
{{r-code|code=<nowiki>> ga$exploregetRefClass(Class = "rga")
Generator for class "rga":
</nowiki>}}
Получить информацию о всех методах, доступных для класса <code>rga</code> можно с помощью команды <code>rga$methods()</code>: {{r-code|code=<nowiki>> rga$methods() [1] "callSuper" "copy" "explore" "export" "field" "getAccounts" [7] "getClass" "getData" "getDataInBatches" "getDataInWalks" "getFirstDate" "getGoals" [13] "getMCFData" "getMCFDataInBatches" "getMCFDataInWalks" "getMGMTData" "getProfiles" "getRefClass" [19] "getSegments" "getToken" "getWebProperties" "import" "initFields" "initialize" [25] "isToken" "isTokenExpired" "isWhere" "prepare" "refreshToken" "setToken" [31] "show" "status" "tokenExpiresIn" "trace" "untrace" "usingMethods" </nowiki>}} Наиболее полезными являются:
* <code>explore</code> - получение информации о о классе <code>rga</code>;
* <code>getAccounts</code> - получение списка аккаунтов в, к которым пользователь имеет доступ;
* <code>getData</code> - получение данных из GA API базового отчёта;
* <code>show</code> - получение подробной информации о данных подключения к GA;
* <code>status</code> - получение краткой информации о статусе подключения к GA;
 
Получить справку по тому или иному методу можно с помощью команды <code>rga$help(topic)</code>, где вместо <code>topic</code> нужно подставить название интересующего метода:
 
{{r-code|code=<nowiki>> rga$help("getWebProperties")
Call:
$getWebProperties(accountId = , start = , max = )
</nowiki>}}
Вызов метода осуществляется аналогично доступу к элементам списка посредством оператора <code>$</code>. После создания объекта с помощью функции <code>rga.open()</code> к методам можно обратиться с помощью конструкции <code>object$methodName()</code>, где <code>object</code> - имя, которое было указано в качестве аргумента <code>instance</code> при вызове функции <code>rga.open()</code>, а <code>methodName()</code> - один из вышеперечисленных методов.
Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции <code>args</code>. Например:
output.raw, output.formats, return.url = FALSE, rbr = FALSE,
envir = .GlobalEnv)
NULL</nowiki>}}
Пакет <code>rga</code> поддерживает работу как с [https://developers.google.com/analytics/devguides/reporting/core/v3/ API отчётов], так и с [https://developers.google.com/analytics/devguides/reporting/mcf/v3/ API многоканальных последовательностей].
Пояснения по значениям аргументов для метода <code>getData</code>:
* <code>ids</code> - номер ID профиля, из которого нужно выгрузить данные;* <code>start.date</code> - задает символьная строка, которая задаёт стартовое время в формате, указанном с помощью аргумента <code>date.formatYYYY-MM-DD</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>. Допускаются также значения "today", "yesterday", "ndaysAgo", где <code>n</code> - это количество дней;* <code>end.date</code> - задает символьная строка, которая задаёт конечное время в формате, указанном с помощью аргумента <code>date.formatYYYY-MM-DD</code><ref>В данном случае используется функция <code>Sys.Date()</code>, которая выводит текущую дату.</ref>. Допускаются также значения "today", "yesterday", "ndaysAgo", где <code>n</code> - это количество дней;* <code>date.format</code> - символьная строка, которая задаёт формат даты, который используется по умолчанию для <code>start.date</code> и <code>end.date</code> преобразования дат, полученных в результате запроса (по умолчанию <code>format(Sys.time(), "%Y-%m-%d")</code>);* <code>metrics</code> - символьная строка, которая определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию <code>"ga:visits"</code>)<ref>Можно использовать не больше 10 метрик одновременно.</ref>;* <code>dimensions</code> - символьная строка, которая определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию <code>"ga:date"</code>)<ref>Можно использовать не больше 7 измерений одновременно.</ref>;* <code>segment</code> - символьная строка, которая определяет сегмент данных (как правило, страницы/разделы сайта);* <code>sort</code> - символьная строка, которая определяет, по какому из столбцов будет производиться сортировка данных в таблице<ref>Поддерживается как прямая, так и обратная сортировка</ref>;* <code>filters</code> - символьная строка, которая определяет фильтры, которые накладываются применяемые при отборе данных на данные стороне сервера (в определенной мере аналог сегментов);* <code>batch = TRUE</code> собирает все данные, а не только первые 10000 - позволяет преодолеть ограничение на количество возвращаемых строк при ответе сервера (необходимо, если предполагается, что строк может быть многобольше, чем 10000).* <code>walk = TRUE</code> собирает - позволяет получить исходные, а не агрегированные данные.
Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</code> являются обязательными для запроса к GA Google Analytics API. Прм этом функция <code>getData()</code> требует только <code>id</code> профиля, т.к. остальные аргументы имеют значения по умолчанию. Все аргументы метода <code>getData</code>, а также значения по умолчанию , можно посмотреть с помощью команды <code>args(ga$getData)</code>.
Детальную информацию можно найти на соответствующих страницах справочного руководства по GA API:
* по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments
Получить доступ к API GA Google Analytics можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
{{r-code|code=<nowiki>> ga.data <- ga$getData(ids = id,
{{r-code|code=<nowiki>> str(ga.data)
'data.frame': 34 obs. of 4 variables:
$ date : Date, format: "2014-03-19" "2014-03-20" "2014-03-21" "2014-03-22" ...
$ pageviews: num 9032 11914 10494 7173 8561 ...
* [[R:Google Analytics/Параметры и измерения|Google Analytics - Параметры и измерения]]
* [[R:Google Analytics/Примеры|Примеры анализа данных Google Analytics в R]]
 
[[Категория:R]]
[[Категория:Веб-аналитика]]

Навигация