R:Google Analytics — различия между версиями

Материал Psylab.info - энциклопедии психодиагностики
Перейти к: навигация, поиск
м (→‎Получение данных)
м (→‎Общее описание)
Строка 56: Строка 56:
 
! colspan=4 | Доступ к API
 
! colspan=4 | Доступ к API
 
|-
 
|-
−
| Доступ к 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" | +
 
| style="text-align:center" | +
 
| style="text-align:center" | +
 
|-
 
|-
−
| Доступ к APIотчётов<br />многоканальных последовательностей
+
| Доступ к [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" | +
 
| style="text-align:center" | -
 
| style="text-align:center" | -
 
|-
 
|-
−
| Доступ к API<br />конфигурации<ref>Информация по аккаунтам, профилям, представлениям, сегментам и целям.</ref>
+
| Доступ к [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" | +

Версия 04:56, 29 мая 2014


Общее описание

На данный момент в официальном репозитории CRAN нет пакетов для работы с API Google Analytics [1], но в сети можно обнаружить три рабочих решения: RGoogleAnalytics, rga и ganalytics.

Сравнительная таблица:

Параметры сравнения RGoogleAnalytics rga ganalytics
Общая информация
Размещение Google Code GitHub GitHub
Дата публикации 29.09.2010 27.11.2012 25.05.2013
Дата последней стабильной версии 9.09.2013[2] 25.05.2014[3] 24.05.2014[4]
Лицензия Apache 2.0 GPL MIT
Зависимости RCurl, rjson, lubridate bitops, RCurl, jsonlite, lubridate, httr httr, plyr, stringr
Авторизация
Авторизация по логину и паролю + - -
Авторизация OAuth2[5] + + +
Доступ к API
Доступ к API базовых отчётов + + +
Доступ к API отчётов
многоканальных последовательностей
- + -
Доступ к API конфигурации[6] + + -
Пакетная обработка запросов[7] + + +

С точки зрения внутренней организации кода пакеты можно охарактеризовать следующим образом. RGoogleAnalytics основан на использовании простых функции и S3-методов, но по внутренней организации похож на RC[8]. rga целиком основан на использовании RC. ganalytics основан на использовании S4 классов и методов. Получить обобщённое представление об ООП системе в R можно в этом материале. Отметим, что все пакеты основываются на использовании пакета httr.

В плане подробности документации, бесспорно, выигрывает пакет ganalytics. Он обладает довольно подробным README файлом, описывающим практически всю функциональность пакета. Помимо этого, пакет также содержит полную документацию всех функций, которая поставляется вместе с пакетом. Пакет rga обладает README файлом, описывающем лишь основы работы с пакетом и не включает в себя описание ряда возможностей пакета. При установке пакета документация содержит только краткое описание инициализации пакета. Документация пакета RGoogleAnalytics включает файл README, в котором пошагово описан процесс работы с пакетом, включающим весь функционал.

Таким образом, основным источником документации для рассматриваемых пакетов являются файлы RESDME, размещённые на сайтах разработчиков.

Установка необходимых пакетов

Устанавливаем и подключаем пакет devtools, для доступа к github (требуется только в первый раз, для установки пакета rga):

КодR

<syntaxhighlight lang="r">> install.packages("devtools") > library(devtools)</syntaxhighlight>

Устанавливаем пакет rga:

КодR

<syntaxhighlight lang="r">> install_github("rga", "skardhamar")</syntaxhighlight>

Организация доступа к API

Загрузка пакета доступа к GA (требуется только в начале работы при запуске новой R-сессии):

КодR

<syntaxhighlight lang="r">> library(rga)</syntaxhighlight>

Запрет верификации SSL-соединения (требуется только для ОС Windows, чтобы избежать ошибок при аутентификации):

КодR

<syntaxhighlight lang="r">> options(RCurlOptions = list(capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))</syntaxhighlight>

Для создания ключа аутентификации потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер[9].

КодR

<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>

Видим, что в директории проекта появился файл ga.rga[10]. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла ga.rga в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.

Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:

  1. Необходимо создать проект на странице https://console.developers.google.com/project;
  2. На вкладке APIs & auth на вкладке APIs надо активировать Analytics API, нажав на кнопку, где написано OFF.
  3. Во вкладке APIs & auth перейти во вкладку Credentials, где выбрать Create new Client ID;
  4. При создании Client ID выбрать APPLICATION TYPE: Installed application, INSTALLED APPLICATION TYPE: other, и нажать create;
  5. В результате будет Client ID = и Client secret = ;
  6. На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;

Создаем постоянный ключ (откроется браузер, где надо будет выбрать свой почтовый аккаунт и подтвердить вход в API, тогда выдадут код, который надо будет вставить в консоль):

КодR

<syntaxhighlight lang="r">> rga.open(instance = "ga", client.id = "", client.secret = "", where = "api.rga")</syntaxhighlight>

Пояснения по значениям аргументов:

  • client.id необходимо вставить сюда Client ID;
  • client.secret необходимо вставить сюда Client secret.

После успешной аутентификации информацию о установленном подключении можно получить с помощью команды ga$status() или более подробную информацию ga$show().

  1. Элемент нумерованного списка

Получение данных

Получить информацию о классе rga можно с помощью функции getRefClass():

КодR

<syntaxhighlight lang="r">> getRefClass(Class = "rga") Generator for class "rga": Class fields: Name: client.id client.secret where token Class: character character character list Class Methods: "callSuper", "copy", "explore", "export", "field", "getAccounts", "getClass", "getData", "getDataInBatches", "getDataInWalks", "getFirstDate", "getGoals", "getMCFData", "getMCFDataInBatches", "getMCFDataInWalks", "getProfiles", "getRefClass", "getSegments", "getToken", "getWebProperties", "import", "initFields", "initialize", "isToken", "isTokenExpired", "isWhere", "prepare", "processManagementData", "refreshToken", "setToken", "show", "status", "tokenExpiresIn", "trace", "untrace", "usingMethods" Reference Superclasses: "envRefClass" </syntaxhighlight>

Получить информацию о всех методах, доступных для класса rga можно с помощью команды rga$methods():

КодR

<syntaxhighlight lang="r">> 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" </syntaxhighlight>

Наиболее полезными являются:

  • getAccounts - получение списка аккаунтов в, к которым пользователь имеет доступ;
  • getData - получение данных из GA API базового отчёта;
  • getFirstDate - получения даты начала сбора статистики для данного id;
  • getGoals - получение списка целей;
  • getMCFData - получение данных из GA API многоканальных последовательностей;
  • getProfiles - получение списка ресурсов и представлений сайтов, к которым пользователь имеет доступ[11];
  • getSegments - получение списка сегментов;
  • getToken - получение токена дотупа;
  • getWebProperties - получение списка ресурсов, к которым пользователь имеет доступ[12];
  • refreshToken - обновление токена доступа;
  • show - получение подробной информации о данных подключения к GA;
  • status - получение краткой информации о статусе подключения к GA;

Получить справку по тому или иному мтеоду можно с помощью команды rga$help(topic), где вместо topic нужно подставить название интересующего метода:

КодR

<syntaxhighlight lang="r">> rga$help("getWebProperties") Call: $getWebProperties(accountId = , start = , max = ) </syntaxhighlight>

Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции args. Например:

КодR

<syntaxhighlight lang="r">> args(ga$getData) function (ids, start.date = format(Sys.time(), "%Y-%m-%d"), end.date = format(Sys.time(), "%Y-%m-%d"), date.format = "%Y-%m-%d", metrics = "ga:users,ga:sessions,ga:pageviews", dimensions = "ga:date", sort = "", filters = "", segment = "", fields = "", start = 1, max, messages = TRUE, batch, walk = FALSE, output.raw, output.formats, return.url = FALSE, rbr = FALSE, envir = .GlobalEnv) NULL </syntaxhighlight>

Пакет rga поддерживает работу как с API отчётов, так и с API многоканальных последовательностей.

Получения данных базовых отчётов:

КодR

<syntaxhighlight lang="r">> ga$getData(id, start.date, end.date, metrics, dimensions)</syntaxhighlight>

Получение данных по многоканальным последовательностям можно получить через функцию ga$getMCFData(). Аргументы методов getData и getMCFData совпадают[13].

Пояснения по значениям аргументов для метода getData:

  • ids - номер профиля, из которого нужно выгрузить данные;
  • start.date - символьная строка, которая задаёт стартовое время в формате %Y-%m-%d[14];
  • end.date - символьная строка, которая задаёт конечное время в формате %Y-%m-%d[15];
  • date.format - символьная строка, которая задаёт формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию %Y-%m-%d);
  • metrics - символьная строка, которая определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию "ga:visits")[16];
  • dimensions - символьная строка, которая определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию "ga:date")[17];
  • segment - символьная строка, которая определяет сегмент данных (как правило, страницы/разделы сайта);
  • sort - символьная строка, которая определяет, по какому из столбцов будет производиться сортировка данных в таблице[18];
  • filters - символьная строка, которая определяет фильтры, применяемые при отборе данных на стороне сервера (в определенной мере аналог сегментов);
  • batch = TRUE - позволяет преодолеть ограничение на количество возвращаемых строк при ответе сервера (необходимо, если предполагается, что строк может быть больше, чем 10000).
  • walk = TRUE - позволяет получить исходные, а не агрегированные данные.

Аргументы ids, start.date, end.date и metrics являются обязательными для запроса к GA API. Прм этом функция getData() требует только id профиля, т.к. остальные аргументы имеют значения по умолчанию. Все аргументы метода getData, а также значения по умолчанию можно посмотреть с помощью команды args(ga$getData).

Детальную информацию можно найти на соответствующих страницах справочного руководства по GA API:

Получить доступ к API GA можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.

Пример сбора данных по выбранным метрикам и измерениям приведён ниже.

КодR

<syntaxhighlight lang="r">> ga.data <- ga$getData(ids = id, + start.date = ga$getFirstDate(id), end.date = Sys.Date(), + metrics = "ga:users,ga:sessions,ga:pageviews", + dimensions = "ga:date", batch = TRUE)</syntaxhighlight>

После получения данных мы можем работать с переменной ga.data как с обычной таблицей данных (data.frame). Таблица данных, полученныя на предыдущем этапе, выглядит следующим образом (значения для psylab.info):

КодR

<syntaxhighlight lang="r">> head(ga.data) date pageviews sessions users 1 2014-03-19 9032 3651 3038 2 2014-03-20 11914 5028 4037 3 2014-03-21 10494 4388 3505 4 2014-03-22 7173 3133 2445 5 2014-03-23 8561 3676 2853 6 2014-03-24 11919 5043 3989</syntaxhighlight>

Структура таблицы имеют следующий вид:

КодR

<syntaxhighlight lang="r">> 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 ... $ sessions : num 3651 5028 4388 3133 3676 ... $ users : num 3038 4037 3505 2445 2853 ...</syntaxhighlight>

Примечания

  1. ↑ Возможно в скором времени там появится, по крайней, мере два пакета: rga и ganalytics.
  2. ↑ В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.
  3. ↑ Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.
  4. ↑ Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.
  5. ↑ Авторизация по Client ID и Client secret, полученным в API Console.
  6. ↑ Информация по аккаунтам, профилям, представлениям, сегментам и целям.
  7. ↑ Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.
  8. ↑ RC - Reference classes.
  9. ↑ Аргумент where с указанием пути и имени файла.
  10. ↑ Можно указать любой удобный путь и имя файла.
  11. ↑ Можно указать accountId (по умолчанию будет выведена информацию по всем аккаунтам).
  12. ↑ Можно указать accountId (по умолчанию будет выведена информацию по всем аккаунтам).
  13. ↑ Отличием является содержание показателей и измерений.
  14. ↑ Получить начальную дату сбора статистики в GA можно с помощью команды ga$getFirstDate(id).
  15. ↑ В данном случае используется функция Sys.Date(), которая выводит текущую дату.
  16. ↑ Можно использовать не больше 10 метрик одновременно.
  17. ↑ Можно использовать не больше 7 измерений одновременно.
  18. ↑ Поддерживается как прямая, так и обратная сортировка

Ссылки

См. также