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

Материал Psylab.info - энциклопедии психодиагностики
Перейти к: навигация, поиск
м (Получение данных)
м (Получение данных)
Строка 193: Строка 193:
  
 
* <code>ids</code> - номер профиля, из которого нужно выгрузить данные;
 
* <code>ids</code> - номер профиля, из которого нужно выгрузить данные;
* <code>start.date</code> - задает стартовое время в формате <code>%Y-%m-%d</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>;
+
* <code>start.date</code> - символьная строка, которая задаёт стартовое время в формате <code>%Y-%m-%d</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>;
* <code>end.date</code> - задает конечное время в формате <code>%Y-%m-%d</code><ref>В данном случае используется функция <code>Sys.Date()</code>, которая выводит текущую дату.</ref>;
+
* <code>end.date</code> - символьная строка, которая задаёт конечное время в формате <code>%Y-%m-%d</code><ref>В данном случае используется функция <code>Sys.Date()</code>, которая выводит текущую дату.</ref>;
* <code>date.format</code> - формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию <code>%Y-%m-%d</code>);
+
* <code>date.format</code> - символьная строка, которая задаёт формат даты, который используется для преобразования дат, полученных в результате запроса (по умолчанию <code>%Y-%m-%d</code>);
* <code>metrics</code> - определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию <code>"ga:visits"</code>)<ref>Можно использовать не больше 10 метрик одновременно.</ref>;
+
* <code>metrics</code> - символьная строка, которая определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию <code>"ga:visits"</code>)<ref>Можно использовать не больше 10 метрик одновременно.</ref>;
* <code>dimensions</code> - определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию <code>"ga:date"</code>)<ref>Можно использовать не больше 7 измерений одновременно.</ref>;
+
* <code>dimensions</code> - символьная строка, которая определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию <code>"ga:date"</code>)<ref>Можно использовать не больше 7 измерений одновременно.</ref>;
* <code>segment</code> - определяет сегмент данных (как правило, страницы/разделы сайта);
+
* <code>segment</code> - символьная строка, которая определяет сегмент данных (как правило, страницы/разделы сайта);
* <code>sort</code> - определяет, по какому из столбцов будет производиться сортировка данных в таблице<ref>Поддерживается как прямая, так и обратная сортировка</ref>;
+
* <code>sort</code> - символьная строка, которая определяет, по какому из столбцов будет производиться сортировка данных в таблице<ref>Поддерживается как прямая, так и обратная сортировка</ref>;
* <code>filters</code> - определяет фильтры, которые накладываются на данные (в определенной мере аналог сегментов);
+
* <code>filters</code> - символьная строка, которая определяет фильтры, применяемые при отборе данных на стороне сервера (в определенной мере аналог сегментов);
* <code>batch = TRUE</code> собирает все данные, а не только первые 10000 строк (необходимо, если предполагается, что строк может быть много).
+
* <code>batch = TRUE</code> - позволяет преодолеть ограничение на количество возвращаемых строк при ответе сервера (необходимо, если предполагается, что строк может быть больше, чем 10000).
* <code>walk = TRUE</code> собирает исходные, а не агрегированные данные.
+
* <code>walk = TRUE</code> - позволяет получить исходные, а не агрегированные данные.
  
 
Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</code> являются обязательными для запроса к GA API. Прм этом функция <code>getData()</code> требует только <code>id</code> профиля, т.к. остальные аргументы имеют значения по умолчанию. Все аргументы метода <code>getData</code>, а также значения по умолчанию можно посмотреть с помощью команды <code>args(ga$getData)</code>.
 
Аргументы <code>ids</code>, <code>start.date</code>, <code>end.date</code> и <code>metrics</code> являются обязательными для запроса к GA API. Прм этом функция <code>getData()</code> требует только <code>id</code> профиля, т.к. остальные аргументы имеют значения по умолчанию. Все аргументы метода <code>getData</code>, а также значения по умолчанию можно посмотреть с помощью команды <code>args(ga$getData)</code>.

Версия 22:25, 28 мая 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 - 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().

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

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

КодR

<syntaxhighlight lang="r">> ga$explore() 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>

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

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

Узнать какие аргументы, а также их значения по умолчанию, можно передать тому или иному методу можно узнать с помощью функции 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. Поддерживается как прямая, так и обратная сортировка

Ссылки

См. также