Что такое семплинг и как его обойти с помощью R?

Увеличение количества трафика на вашем сайте увеличивает вероятность того, что Google Analytics начнет экономить ресурсы и ваше время, чтобы выгрузить отчеты в своем интерфейсе. А это приводит к семплированию данных.

Что такое семплинг?

Для того, чтобы отображать статистику в отчетах при большом количестве хитов на вашем сайте, Google Analytics вместо всего объема данных берет только их часть.

Встречали такое?

Семплинг

Это значит, что Google Analytics взял только 10,21% от каждого дня в диапазоне дат, который вы выбрали и на основании этой выборки построил отчет так, будто 100% событий имеют такую же характеристику, как и 10,21% реальных данных. Проще говоря, GA домножил эту выборку на 10, чтобы получить 100%. А как же учесть 90% оставшихся данных?

Выгрузка по дням с помощью R

Семплинг появляется, если в выгружаемом отчете за период:

  • Более 500 000 сеансов пользователей на уровне ресурса;
  • Более 1 000 000 уникальных строк.

Логично, что нужно уменьшать выгружаемый период, чтобы сократить, например, количество сеансов в отчете, поэтому из Google Analytics можно выгрузить данные по дням с помощью R. Итак, что для этого нужно:

  1. Установите классический R.
  2. Установите RStudio. Это всего лишь удобная красивая графическая оболочка к R. Суровые брутальные программисты могут вполне обойтись и без нее. 🙂 Если вдруг вы столкнулись с проблемами при установке, посмотрите это видео.
  3. Далее подключаем и запускаем пакет RGA.
    install.packages("RGA")
    library("RGA")
  4. Теперь нужно пройти процесс аутентификации, для этого заходим под своей учетной записью в Google Cloud Platform. Затем выбираем вкладку API и сервисы -> Библиотека.

    Google Cloud Platform

    В поиске ищем Analytics API и подключаем этот блок. 

  5. Переходим во вкладку Учетные данные. Создаем Новые учетные данные -> Идентификатор клиента OAuth -> Другие типы.

    Google Cloud Platform

    Вбиваем название идентификатора и получаем всплывающее окно с идентификатором и секретом клиента.

  6. Используем их в коде.
    ga_token <- authorize(client.id = "96326888811-ga6hnjhna4iejbtdv1beb6q2iag4k74m.apps.googleusercontent.com",
                          client.secret = "yCoCCXLL67EO55689ZjF3c_nTi")
  7. А теперь привязываемся к представлению в Google Analytics, из которого будем выгружать данные и формируем запрос. Запрос формируем из метрик и показателей, которые указаны здесь.
    # представление
    ID <- "170396756"
    # временной отрезок
    date.start <- "2018-03-25"
    date.end <- "2018-04-02"
    dates <- seq(as.Date(date.start), as.Date(date.end), by = "days")
    # выгрузка без семплирования данных
    sum.data <- do.call(rbind, lapply(dates, function(d) {
      print(d)
      get_ga(profileId = ID,
             start.date = d,
             end.date = d,
             dimensions = "ga:date",
             metrics = "ga:sessions, ga:users, ga:bounces, ga:transactions, ga:transactionRevenue")
    }))
  8. И последнее, сохраняем нашу выгрузку в csv-файл.
    write.csv(sum.data, file = "D:/Выгрузка_данных_без_семплинга.csv")

    Обратите внимание, что слеши прописываются в обратную сторону.

Дополнение

Не забывайте, что выгрузка идет по дням, поэтому вычисляемые показатели (показатель отказов, % выходов и т.д.) выгружать таким способом нельзя. Вы можете выгрузить отдельно необходимые показатели для их расчета и вычислить их сами за нужный вам период.

Полезные ссылки

Екатерина Шипова

Магистр прикладной математики и информатики, веб-аналитик. Сертифицированный специалист Google Аnalytics и Яндекс.Метрика.