R:Google Analytics — различия между версиями
м (→Получение данных) |
м (→Получение данных) |
||
Строка 193: | Строка 193: | ||
* <code>ids</code> - номер профиля, из которого нужно выгрузить данные; | * <code>ids</code> - номер профиля, из которого нужно выгрузить данные; | ||
− | * <code>start.date</code> - | + | * <code>start.date</code> - символьная строка, которая задаёт стартовое время в формате <code>%Y-%m-%d</code><ref>Получить начальную дату сбора статистики в GA можно с помощью команды <code> ga$getFirstDate(id)</code>.</ref>; |
− | * <code>end.date</code> - | + | * <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> | + | * <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
|
Материал «R:Google Analytics», созданный авторами Филипп Управителев и Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: КодR <syntaxhighlight lang="r">> install.packages(pkgs = "pkgname") > library(package = "pkgname")</syntaxhighlight> |
Содержание
Общее описание
На данный момент в официальном репозитории 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
):
<syntaxhighlight lang="r">> install.packages("devtools") > library(devtools)</syntaxhighlight>
Устанавливаем пакет rga
:
<syntaxhighlight lang="r">> install_github("rga", "skardhamar")</syntaxhighlight>
Организация доступа к API
Загрузка пакета доступа к GA (требуется только в начале работы при запуске новой R-сессии):
<syntaxhighlight lang="r">> library(rga)</syntaxhighlight>
Запрет верификации SSL-соединения (требуется только для ОС Windows, чтобы избежать ошибок при аутентификации):
<syntaxhighlight lang="r">> options(RCurlOptions = list(capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))</syntaxhighlight>
Для создания ключа аутентификации потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер[9].
<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>
Видим, что в директории проекта появился файл ga.rga
[10]. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла ga.rga
в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:
- Необходимо создать проект на странице https://console.developers.google.com/project;
- На вкладке APIs & auth на вкладке APIs надо активировать Analytics API, нажав на кнопку, где написано
OFF
. - Во вкладке APIs & auth перейти во вкладку Credentials, где выбрать Create new Client ID;
- При создании Client ID выбрать APPLICATION TYPE: Installed application, INSTALLED APPLICATION TYPE: other, и нажать create;
- В результате будет Client ID = и Client secret = ;
- На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;
Создаем постоянный ключ (откроется браузер, где надо будет выбрать свой почтовый аккаунт и подтвердить вход в API, тогда выдадут код, который надо будет вставить в консоль):
<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()
:
<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
. Например:
<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 многоканальных последовательностей.
Получения данных базовых отчётов:
<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 отчётов: https://developers.google.com/analytics/devguides/reporting/core/v3/reference
- по параметрам запроса к API многоканальных последовательностей: https://developers.google.com/analytics/devguides/reporting/mcf/v3/reference
- по метрикам и измерениям базовых отчётов: https://developers.google.com/analytics/devguides/reporting/core/dimsmets
- по метрикам и измерениям многоканальных последовательностей: https://developers.google.com/analytics/devguides/reporting/mcf/dimsmets/
- по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments
Получить доступ к API GA можно также с помощью веб-сервисов Google по следующей ссылке: https://developers.google.com/apis-explorer/?hl=ru#p/analytics/v3/. Для получения данных необходимо авторизоваться и задать требуемые параметры для запроса к API.
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
<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):
<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>
Структура таблицы имеют следующий вид:
<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>
Примечания
- ↑ Возможно в скором времени там появится, по крайней, мере два пакета:
rga
иganalytics
. - ↑ В апреле 2014 были внесены значительные изменения в код проекта, но после их внесения стабильного выпуска пока нет.
- ↑ Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.
- ↑ Дата последнего коммита на данный момент, т.к. стабильные выпуски данного пакета отсутствуют.
- ↑ Авторизация по Client ID и Client secret, полученным в API Console.
- ↑ Информация по аккаунтам, профилям, представлениям, сегментам и целям.
- ↑ Pagination - получение данных, превышающих ограничения Google (1000 на один запрос) путем организации нескольких запросов.
- ↑ RC - Reference classes.
- ↑ Аргумент
where
с указанием пути и имени файла. - ↑ Можно указать любой удобный путь и имя файла.
- ↑ Можно указать
accountId
(по умолчанию будет выведена информацию по всем аккаунтам). - ↑ Можно указать
accountId
(по умолчанию будет выведена информацию по всем аккаунтам). - ↑ Отличием является содержание показателей и измерений.
- ↑ Получить начальную дату сбора статистики в GA можно с помощью команды
ga$getFirstDate(id)
. - ↑ В данном случае используется функция
Sys.Date()
, которая выводит текущую дату. - ↑ Можно использовать не больше 10 метрик одновременно.
- ↑ Можно использовать не больше 7 измерений одновременно.
- ↑ Поддерживается как прямая, так и обратная сортировка
Ссылки
- R Google Analytics: An easy API connector to Google Analytics in R - http://skardhamar.github.io/rga/
- r-google-analytics: Google Analytics For The R Statistical Programming Language - https://code.google.com/p/r-google-analytics/
- Google Analytics: Dimensions & Metrics Reference - https://developers.google.com/analytics/devguides/reporting/core/dimsmets
- Google Analytics Query Explorer 2 - https://ga-dev-tools.appspot.com/explorer/?csw=1
- Google Analytics: Core Reporting API - Segments - https://developers.google.com/analytics/devguides/reporting/core/v3/segments
- Google Analytics Core Reporting API Changelog: https://developers.google.com/analytics/devguides/reporting/core/v3/changelog