Jak ominąć próbkowanie danych w Google Analytics przy pomocy skryptu R?

Wielokrotnie słyszałem uwagę w kontekście raportów Google Analytcs, że w tych danych coś nie gra. Nie pasują do danych z CRM, nie zgadzają się sesje z jednego raportu z sesjami z drugiego raportu, wyniki są ekstremalnie zawyżone albo zaniżone itp. Często w takich przypadkach winne jest próbkowanie danych. Najczęściej dotyczy ono darmowych wersji Google Analytics, ale dotyka również wersji płatnych 360.

W darmowej wersji próbkowanie raportu uruchamia się przy przekroczeniu 500 tysięcy sesji. Może zdarzyć się też przy mniejszej ilości – więcej o próbkowaniu przeczytacie tutaj.  Próbkowanie danych uruchamia się najczęściej w momencie kiedy korzystacie z segmentacji oraz wybieracie szerszy przedział czasowy.

Jak sprawdzić czy dany raport jest próbkowany?
Informacja odnośnie próbkowania dostępna jest w postaci logo tarczy umiejscowionej na górze raportu. Tarcza w kolorze zielonym oznacza brak próbkowania. Tarcza w kolorze pomarańczowym oznacza próbkowanie danych. Po najechaniu na tarczę mamy informację o tym jak duże jest to próbkowanie.

Próbkowanie danych w Google Analytics na poziomie 21,94% sesji.

Co oznacza próbkowanie danych?
Gdy zachodzi próbkowanie danych, to wartości, które widzicie w raporcie są estymowane na pewnym poziomie. Nie są dokładnym odzwierciedleniem tego, co znajduje się w bazie Google.
Przykładowo próbkowanie na poziomie 22% oznacza, że dane, które widzicie są ekstrapolowane z 22% realnie zebranych przez Google Analytics wizyt.
Zatem gdy wystąpi próbkowanie na poziomie kilku procent nie powinno się przykładać większej wagi do wyników raportu. Estymacja z próbki kilku procent jest bowiem obarczona dużym błędem szacunkowym i często w takich sytuacjach wyniki są czystą abstrakcją.

Czy jest możliwe ominięcie próbkowania danych?
Tak, jest na to kilka sposobów.
Ja przedstawię proste rozwiązanie, które sprawdzi się na doraźne potrzeby. Jest to po prostu fragment skryptu w R, który pobiera potrzebne dane za każdy dzień z osobna. Dzięki temu, że pobieramy dane za 1 dzień, to nie narażamy się na próbkowanie danych. Rozwiązanie to jest dość powszechnie dostępne w internecie.

Jeżeli nie mieliście wcześniej do czynienia z R to nie martwcie się. Nie jest to trudne.
Na początek musicie pobrać program do wywoływania skryptu R. Dla wygody może być to graficzny interfejs np. rStudio. Po otwarciu programu będziecie widzieli podział na cztery okienka. Najbardziej będą Was interesowały te po lewej stronie. Górne lewe będzie zawierało Wasz skrypt (oznaczone na obrazku nr 1), a dolne lewe to będzie konsola (oznaczona nr 2), która będzie Was informowała o wywoływaniu się kodu.

RStudio

Poniżej przykładowy kod, w którym pobieram sesje z GA Microdaty dla segmentu wizyt z mobile i zapisuje je do pliku.

#biblioteka umozliwiajaca laczenie sie z Google Analytics
library(googleAnalyticsR)

#gdy wykonujecie skrypt po raz pierwszy dla danego loginu ustawcie w nawiasie FALSE, 
#w innym przypadku - TRUE
ga_auth(FALSE)

#zamiast 215211150 podajcie ID widoku GA, z którego robicie raport
view_id <- "215211150"

#w nawiasach ustawcie zakres dat jaki Was interesuje
from <- as.Date("2020-05-01", format = "%Y-%m-%d")
to <- as.Date("2020-05-12", format = "%Y-%m-%d")

#definicja segmentu jakiego chcecie użyć
#w nawiasie pierwszą pozycją jest wymiar lub metryka GA
#'operator' to rodzaj dopasowania - w tym przypadku wyrażenie regularne
#'type' to typ danych - wymiar lub metryka
#'expressions' to wartość, do której dopasowujemy wybrany wymiar
segment1 <- segment_element("deviceCategory", 
                      operator = "REGEXP", 
                      type = "DIMENSION", 
                      expressions = "mobile")


#tworzenie wektora z elememntami segmentu, tu nie musicie nic zmieniać
sv_simple <- segment_vector_simple(list(list(segment1)))

seg_defined <- segment_define(sv_simple)

#w drugim argumencie nawiasu wybieracie pomiędzy segmentem sesji lub użytkownika
#u nas wybrany session_segment
segment4 <- segment_ga4("simple", session_segment = seg_defined)

#informacja o jednodniowych sekwencjach dat oraz tworzenie data frame - nie zmieniamy

z <- seq.Date(from, to, 1)

d <- data.frame()

for (i in 1:(length(z))) {

#poniżej wstawiamy co chcemy wyświetlić w raporcie oraz konfigurujemy raport
#dimensions - tu wstawiamy wymiar (kilka wymiarów oddzielamy przecinkami), my mamy wybraną datę
#metrics - tu wstawiamy metrykę (kilka metryk oddzielamy przecinkami), my mamy wybrane sesje  
#anti_sample w przypadku gdy macie bardzo dużą ilość danych dziennych warto ustawić na T (zamiast F)
  data <- google_analytics(
    view_id,
    date_range = c(z[i], z[i]),
    dimensions = c('date'),
    metrics = c('sessions'),
    max = -1,
    anti_sample = F,
    segments = segment4
  )
  
  d <- rbind(d, data)
  
}

#zapisujemy dane do pliku .xls
write.csv2(d, file = 'microdata_mobile_ga.xls')

Aby wywołać dany skrypt wystarczy go zaznaczyć myszką we wskazanym okienku nr 1, a następnie kliknąć Run (po prawej u góry okienka nr 1) lub skrót klawiszowy CTRL+Enter. Nie musicie zaznaczyć na raz całego kodu i go uruchamiać. Możecie to robić partiami i tak też rekomenduję by go wywoływać. W przypadku kiedy np. pojawią się jakieś błędy to wówczas będziecie wiedzieli, które partie kodu są odpowiedzialne za nie odpowiedzialne.
Na początku wywołajcie kod do pozycji:

ga_auth(FALSE)

Kod spowoduje otwarcie strony przeglądarki, w której będziecie musieli zezwolić RStudio na dostęp do Waszego konta Google Analytics. Po wyrażeniu zgody pojawi się token do autoryzacji, który będziecie musieli wstawić do okienka konsoli (okienko nr 2).
Potem już możecie dalej stopniowo zaznaczać i wywoływać kod.

Wynikiem działania skryptu powinien być plik .xls, który będzie zawierał odpowiednie dane.

Jeżeli będziecie chcieli wywołać inne segmenty z innymi wymiarami i metrykami to pomocne będą następujące linki do: dokumentacji Google Analytics w R , a także do nazewnictwa wymiarów i metryk GA.

Wadą skryptu jest to, że działa wolno. W przypadku dużej ilości danych, jakie będzie potrzebowali przetwarzać i wyciągać lepiej zdecydować się na inne rozwiązanie.
Niemniej dla prostych danych i raportów rozwiązanie to wydaje się wystarczające.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *