R:Google Analytics — различия между версиями
м (→Получение данных из GA) |
м (→Получение данных из GA) |
||
Строка 112: | Строка 112: | ||
$ sessions : num 3651 5028 4388 3133 3676 ... | $ sessions : num 3651 5028 4388 3133 3676 ... | ||
$ users : num 3038 4037 3505 2445 2853 ...</nowiki>}} | $ users : num 3038 4037 3505 2445 2853 ...</nowiki>}} | ||
+ | |||
+ | === <code>ids</code> === | ||
+ | |||
+ | <code>ids</code> - уникальные ID, который используется для получения данных, которые можно получиться при помощи команды <code>ga$getProfiles()</code>. Чтобы автоматизировать процесс получения ID, можно использовать следующую последовательность команд: | ||
+ | |||
+ | {{r-code|code=<nowiki>> profiles <- ga$getProfiles() # таблица профилей | ||
+ | > siteURL <- "http://psylab.info" # URL сайта | ||
+ | > view <- "All data" # название представления | ||
+ | > id <- profiles[profiles$websiteUrl == siteURL & profiles$name == view, "id"]</nowiki>}} | ||
+ | |||
+ | === <code>start.date</code> и <code>end.date</code> === | ||
+ | |||
+ | Диапазон даты для выборки данных. Формат данных зависит от значения аргумента <code>date.format</code> и по умолчанию имеет вид <code>format(Sys.time(), "%Y-%m-%d")</code>. | ||
+ | |||
+ | Чтобы получить диапазон дат, охватывающих предыдущий месяц, можно использовать следующий код: | ||
+ | |||
+ | {{r-code|code=<nowiki>> start.date <- end.date <- as.POSIXlt(Sys.Date(), tz = timezone) # текущая дата | ||
+ | > start.date$mday <- end.date$mday <- 1 # номер дня месяца меняем на 1 | ||
+ | > start.date$mon <- start.date$mon - 1 # от текущего номера месяца отнимаем 1 | ||
+ | > end.date$mday <- end.date$mday - 1 # отнимаем 1 день от первого дня мясца</nowiki>}} | ||
+ | |||
+ | Преобразование даты в класс <code>POSIXlt</code> (именованный список) даёт возможность считывать и изменять отдельные части даты и времени<ref>Подробнее <code>help(DateTimeClasses)</code>.</ref>. | ||
+ | |||
+ | Чтобы получить диапазон дат за последние 30, 90 или 180 дней, достаточно отнять нужное количество дней от текущей даты. Например: | ||
+ | |||
+ | {{r-code|code=<nowiki>> end.date <- Sys.Date() | ||
+ | > start.date <- end.date - 30</nowiki>}} | ||
== Примечания == | == Примечания == |
Версия 16:48, 27 апреля 2014
|
Материал «R:Google Analytics», созданный авторами Филипп Управителев и Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: КодR <syntaxhighlight lang="r">> install.packages(pkgs = "pkgname") > library(package = "pkgname")</syntaxhighlight> |
Содержание
Общее описание
Пакетов для работы с API Google Analytics несколько, наиболее часто упоминающиеся - rga
и RGoogleAnalytics
. В принципе, они различаются незначительно - в процедуре аутентификации и организации доступа к API. Пакет rga
выглядит более удобным для работы, так как ключ для аутентификации создается один раз, и потом только загружается, в то время как при работе с пакетом RGoogleAnalytics
приходится в начале каждой сессии проходить аутентификацию в браузере. К тому же, пакет rga
обладает более прозрачной логикой запросов к API.
Установка необходимых пакетов
Устанавливаем и подключаем пакет devtools
, для доступа к github (требуется только в первый раз, для установки пакета rga
):
<syntaxhighlight lang="r">> install.packages("devtools") > library(devtools)</syntaxhighlight>
Устанавливаем пакет rga
[1]:
<syntaxhighlight lang="r">> install_github("rga", "willempaling")</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>
Для создания ключа аутентификации потребуется переход в браузер, подтверждение доступа и копирование ключа в консоль. Опционально команда создает отдельный файл, который потом можно использовать для аутентификации без перехода в браузер и т.д.
<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>
Видим, что в директории проекта появился файл ga.rga
[2]. Теперь при повторном использовании этой команды будет осуществляться проверка наличия файла ga.rga
в рабочей директории и, если такой файл будет найден, то данные для аутентификации будут взяты из данного файла.
Второй вариант аутентификации с созданием собственного клиента API и ключей доступа:
- Необходимо создать проект на странице https://console.developers.google.com/project;
- Во вкладке APIs & auth выбрать Analytics API, и там перейти во вкладку Credentials, где выбрать Create new Client ID;
- При создании Client ID выбрать Installed application/other, и нажать create;
- В результате будет Client ID = и Client secret = ;
- На вкладке Consent screen необходимо выбрать рабочий email и дать название приложению (Product name), сохранить;
- На общей вкладке APIs & auth/Analytics API/APIs надо активировать API, нажав на кнопку, где написано OFF.
Создаем постоянный ключ (откроется браузер, где надо будет выбрать свой почтовый аккаунт и подтвердить вход в 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$.self
.
Получение данных из GA
Получение списка аккаунтов в GA:
<syntaxhighlight lang="r">> ga$getAccounts()</syntaxhighlight>
Получение списка ресурсов и представлений сайтов в GA, которые используется для сбора данных:
<syntaxhighlight lang="r">> ga$getProfiles()</syntaxhighlight>
Пример сбора данных по выбранным метрикам и измерениям приведён ниже.
<syntaxhighlight lang="r">> ga.data <- ga$getData(ids = id, + start.date = ga$getFirstDate(id), end.date = Sys.Date(), + metrics = "ga:pageviews,ga:sessions,ga:users", + dimensions = "ga:date", + batch = TRUE)</syntaxhighlight>
Пояснения по значениям аргументов:
-
ids
- номер профиля, из которого нужно выгрузить данные; -
start.date
- задает стартовое время в формате, указанном с помощью аргументаdate.format
[3]; -
end.date
- задает конечное время в формате, указанном с помощью аргументаdate.format
[4]; -
date.format
- формат даты, который используется по умолчанию дляstart.date
иend.date
(по умолчаниюformat(Sys.time(), "%Y-%m-%d")
) -
metrics
- определяет показатели (столбцы), которые будут входить в таблицу с данными (по умолчанию"ga:visits"
)[5]; -
dimensions
- определяет параметры (строки) таблицы, которые будут входить в таблицу с данными (по умолчанию"ga:date"
)[6]; -
segment
- определяет сегмент данных (как правило, страницы/разделы сайта); -
sort
- определяет, по какому из столбцов будет производиться сортировка данных в таблице[7]; -
filters
- определяет фильтры, которые накладываются на данные (в определенной мере аналог сегментов); -
batch = TRUE
собирает все данные, а не только первые 10000 строк (необходимо, если предполагается, что строк может быть много).
Аргументы 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#q_summary
- по метрикам и измерениям: https://developers.google.com/analytics/devguides/reporting/core/dimsmets
- по сегментам: https://developers.google.com/analytics/devguides/reporting/core/v3/segments.
После получения данных мы можем работать с переменной 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>
ids
ids
- уникальные ID, который используется для получения данных, которые можно получиться при помощи команды ga$getProfiles()
. Чтобы автоматизировать процесс получения ID, можно использовать следующую последовательность команд:
<syntaxhighlight lang="r">> profiles <- ga$getProfiles() # таблица профилей > siteURL <- "http://psylab.info" # URL сайта > view <- "All data" # название представления > id <- profiles[profiles$websiteUrl == siteURL & profiles$name == view, "id"]</syntaxhighlight>
start.date
и end.date
Диапазон даты для выборки данных. Формат данных зависит от значения аргумента date.format
и по умолчанию имеет вид format(Sys.time(), "%Y-%m-%d")
.
Чтобы получить диапазон дат, охватывающих предыдущий месяц, можно использовать следующий код:
<syntaxhighlight lang="r">> start.date <- end.date <- as.POSIXlt(Sys.Date(), tz = timezone) # текущая дата > start.date$mday <- end.date$mday <- 1 # номер дня месяца меняем на 1 > start.date$mon <- start.date$mon - 1 # от текущего номера месяца отнимаем 1 > end.date$mday <- end.date$mday - 1 # отнимаем 1 день от первого дня мясца</syntaxhighlight>
Преобразование даты в класс POSIXlt
(именованный список) даёт возможность считывать и изменять отдельные части даты и времени[8].
Чтобы получить диапазон дат за последние 30, 90 или 180 дней, достаточно отнять нужное количество дней от текущей даты. Например:
<syntaxhighlight lang="r">> end.date <- Sys.Date() > start.date <- end.date - 30</syntaxhighlight>
Примечания
- ↑ Поскольку автор оригинального пакета в данный момент не занимается его поддержкой, мы используем форк Willem Paling, в котором исправлены некоторые критические ошибки.
- ↑ Можно указать любой удобный путь и имя файла.
- ↑ Получить начальную дату сбора статистики в GA можно с помощью команды
ga$getFirstDate(id)
. - ↑ В данном случае используется функция
Sys.Date()
, которая выводит текущую дату. - ↑ Можно использовать не больше 10 метрик одновременно.
- ↑ Можно использовать не больше 7 измерений одновременно.
- ↑ Поддерживается как прямая, так и обратная сортировка
- ↑ Подробнее
help(DateTimeClasses)
.
Ссылки
- 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