Как выгружать данные с Google Analytics без сэмплирования за весь период ?
В статье описывается метод выгрузки данных без сэмплирования с использованием R скрипта с Google Analytics. При выгрузке агрегированных данных с более чем 500 тыс. сеансов за указанный период дат получаем сообщение о том, что отчет построен на выборке данных, что не отображает точные данные.
Детальнее о сэплировании данных в Cправке Google Analytics
Решение
Использование R скрипта позволяет упростить процесс получения данных с GA. Для данной задачи будем использовать rga.
Плюсы и минусы пакета skardhamar/rga:
Плюсы:
- Удобное решение с простой настройкой и поддержкой всех регулярных выражений Google Analytics API
- Возможность обойти ограничения в 10 000 по количеству выгружаемых строк.
- Возможность обойти большинство ситуаций с сэмплированием данных.
Минусы:
- Нельзя настроить расписание запуска скрипта через Windows Sheduler, так как не поддерживается аутентификация через сервисный аккаунт. Поддерживается только аутентификация, которая использует интерактивную среду (браузер).
- Если количество сессий в день превышает 500 000 сэмплирование данных полностью обойти не удастся.
О том, как настроить сервисный аккаунт и применить его для автоматизации сохранения данных из Search Console можно почитать в статье «Как автоматизировать сохранение истории запросов из Search Console» .
Подготовка к запуску R скрипта
- Бесплатно устанавливаем R и R Studio
- Устанавливаем и подключаем следующие библиотеки:
## Устанавливаем devtools для установки других пакетов из GitHub install.packages("devtools") library(devtools) ## Устанавливаем curl для работы с различными протоколами URL типа install.packages("curl") library(curl) ## Устанавливаем RGA из GitHub для работы с Google Analytics install_github("skardhamar/rga") library(rga)
Для того, чтобы запустить часть скрипта в R Studio необходимо просто вставить часть кода в Console, который находится внизу экрана и нажать Enter. Если установка прошла успешно вы получите похожие уведомления об успешной установке:
Installing package(s) into 'D:/R/library'(as 'lib' is unspecified) .... opened URL downloaded 165 Kb package 'devtools' successfully unpacked and MD5 sums checked ....
- Авторизируемся в Google аккаунт:
rga.open(instance="ga")
- Далее откроется окно браузера, где нужно будет пройти аутентификацию:
- Копируем код
- Вставляем его в консоль в R Studio:
- Далее заканчиваем процесс подготовки к парсингу данных:
options(RCurlOptions = list(verbose = FALSE, capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE)) rga.open(instance="ga", where="~/ga.rga")
- Далее запускаем оставшуюся часть скрипта, которая включает функцию парсинга данных с Google Analytics API:
todaydate <- Sys.Date() ga.data= ga$getData("ga:000000000", batch = TRUE, walk = TRUE, "2015-01-01", todaydate, metrics = "ga:newusers", dimensions = "ga:landingPagePath,ga:date,ga:country", sort = "-ga:newusers", filter = "ga:medium==organic; ga:newusers>0; ga:landingPagePath=~skype|online; ga:landingPagePath!@?") write.csv(ga.data, file = "C:/Users/User/Documents/R/ga-analyze.csv")
Отслеживать, как проходит парсинг данных можем в консоле во время работы скрипта в консоле. Если идет сэмлирование на уровне 1го дня, то соответсвующую информацию можно будет увидеть в консоле. Так же видно, сколько результатов (строк) вернул скрипт:
О использовании ga$getData():
ga$getData(ids, start.date, end.date, metrics = "ga:visits", dimensions = "ga:date", sort = "", filters = "", segment = "", start = 1, max = 1000)
Используя информацию из описания пакета привожу сжатую адаптированую версию.
Переменные (* — обязательные):
ids* — идентификатор представления. Берем из URL представления.
Как пример, https://analytics.google.com/analytics/web/?hl=ru&pli=1#report/acquisition-channels/a93098041w137689899p142050820/%3Fexplorer-table.secSegmentId%3Danalytics.landingPagePath%26explorer-table.plotKeys%3D%5B%5D/ .
Записываем в формате «ga:142050820«
start.date* — начало диапазона
end.date* — конец диапазона. Можем использовать функцию Sys.Date(), если нужны данные до текущего момента.
metrics* — задаем параметры (атрибуты) Google Analytics. То как будут агрегироваться наши данные.
dimensions* — показатели (количественные значения) Google Analytics. Какие количественные данные получаем: сессии, пользователи, показатели отказала, количество транзакций и т.д.
sort = «» — задаем параметр и тип сортировки данных.
filters = «» — фильтрация результатов
segment = «» — идентификатор сегмента данных
start = 1 — индекс первого результата (строки)
max = 1000 — максимальное количество желаемых результатов (строк).
start и max использовать нет необходимости, если мы планируем использовать batch = TRUE, walk = TRUE:
batch = TRUE — определяет тип сбора данных таким образом, что данные будут считываться пошагово, таким образом нет ограничения по количеству строк. Нельзя одновременно использовать параметр функции max и batch = TRUE, так как таким образом значение batch = TRUE игнорируется и будет получено количество строк, указанное в max.
walk = TRUE — указывает на то, что данные будут собираться по дням, а затем агрегироваться, как указано в функции. Таким образом обходим сэмлинг данных.
Выводы
Решение отлично подходят для большинства проектов, где количество сессий не превышает 500 000 в день.
- Можем получать данные из GA за любой период с поддержкой синтаксиса Google Analytics API
- Получаем данные, обходя ограничение в 10 000 строк и сэмлирование данных за большой период времени.
ну або можна скористатися бібліотекою Марка Едмнондсона, де теж передбачений анти-семпліг, аж до пропрацювання погодинних вигрузок для великих сайтів:
http://code.markedmondson.me/googleAnalyticsR/v4.html
Спасибо, отличное дополнение. Более сложный синтаксис, но можно настроить расписание для запуска R скрипта. Нужно потестить.
Насколько я поняла, то почасовая выгрузка работает только для Google Analytics 360 с помощью функции google_analytics_bq
Привет Насть) Если ставить таску через Cron то проблем с авторизацией не возникает. Можно также попробовать в rga.open передавать свои client id и secret из Девелоперской консольки.
Да, client id и secret позволяют только использовать лимиты своего аккаунта, но не позволяют авторизироваться без взаимодействия с браузером. В обоих случаях авторизируется без проблем. Или я что-то не так понимаю?
«Нельзя настроить расписание запуска скрипта через Windows Sheduler»
Там данные клиентские сохраняются в отдельном файле, если ты ставишь автовыполнение таски через Cron то данные по авторизации просто обновляются. Как — то так.
На Win не получилось у меня так, но кажется решение выше куда проще адаптируется под автообновление, чем текущее. Я тут ставила на простоту синтаксиса и использования.
Устанавливаем и подключаем следующие библиотеки:
Выдает такую ошибку
* installing *source* package ‘rga’ …
Предупреждение в as.POSIXlt.POSIXct(x, tz) :
unable to identify current timezone ‘>A:>2A:>5 ‘:
please set environment variable ‘TZ’
** R
** preparing package for lazy loading
Error : package ‘bitops’ required by ‘RCurl’ could not be found
ERROR: lazy loading failed for package ‘rga’
* removing ‘C:/Program Files/R/R-3.3.3/library/rga’
Error: Command failed (1)
In addition: Warning message:
In strptime(x, fmt, tz = «GMT») :
unable to identify current timezone ‘>A:>2A:>5 ‘:
please set environment variable ‘TZ’
> library(rga)
Error in library(rga) : нет пакета под названием ‘rga’
>
Кто нибудь знает как лечиться ?
Посмотрите тут решение проблемы https://social.msdn.microsoft.com/Forums/lync/en-US/706c610f-dfd2-4e02-9978-b74f5345713e/issue-deploying-curl-into-azure-ml?forum=MachineLearning
Все библиотеки установились без проблем, но не открывает браузер вот эта команда: rga.open(instance=»ga»)
Есть какие-то предположения, почему? Ошибок никаких не дает.
Добрый день.
Всё сделал по описанию.
Скрипт отработал без ошибок.
Но почему в результате данные отличаются от данных в личном кабинете?
В обоих местах — без сэмплирования.
Скрипт выдал транзакций меньше чем в ЛК, а доход больше.
Как-то странно.
> install_github(«skardhamar/rga»)
Downloading GitHub repo skardhamar/rga@master
Error in utils::download.file(url, path, method = download_method(), quiet = quiet, :
cannot open URL ‘https://api.github.com/repos/skardhamar/rga/tarball/master’
Помогите, пожайлуйста) Очень прошу 3-ий день мучаюсь
Спасибо за статью и решение с помощью R!
Хочу добавить, что если данных не много то можно воспользоваться официальным адоном Google Analytics для Google Sheets. Если много, то лучший вариант собрать данные в GBQ c помощью инструмента от OWOX https://www.owox.ru/products/bi/pipeline/google-analytics-to-google-bigquery-streaming/