Jak poprawnie obliczać Active Users w GA4 BigQuery
W GA4 pojęcie Active Users wydaje się proste – dopóki nie spróbujesz policzyć go samodzielnie w BigQuery. Wtedy bardzo szybko okazuje się, że większość zapytań SQL liczy aktywnych użytkowników błędnie albo w sposób uproszczony, który przestaje działać przy większych zbiorach danych.
Ten artykuł pokazuje:
- jak najczęściej liczy się Active Users (i dlaczego to nie jest idealne),
- jakie są ograniczenia pola
is_active_user, - oraz jak wygląda najbardziej zbliżona do GA4 logika obliczeń w BigQuery.
Najprostszy sposób: is_active_user = true
Active Users w GA4 BigQuery można policzyć jako:
liczbę unikalnych użytkowników, którzy w danym okresie wyzwolili co najmniej jedno zdarzenie oznaczone jako aktywne (
is_active_user = true)

To pole jest dostępne bezpośrednio w tabelach eksportu GA4 do BigQuery.
Podstawowa logika
- filtrujesz zakres dat,
- liczysz unikalne
user_pseudo_id, - sprawdzasz, czy
is_active_user = true.


To podejście:
- jest szybkie,
- jest łatwe do wdrożenia,
- sprawdza się jako high-level snapshot.
Ograniczenia liczenia Active Users przez is_active_user
1. is_active_user działa na poziomie dnia
Pole is_active_user jest ustawiane per dzień, a nie:
- per sesję,
- per zdarzenie,
- per poziom zaangażowania.
Oznacza to, że:
- nie rozróżnia intensywności aktywności,
- nie nadaje się do analizy krótszych przedziałów czasowych,
- nie daje kontroli nad definicją „aktywności”.
2. Ryzyko przeszacowania aktywnych użytkowników
Jeśli użytkownik:
- zostanie oznaczony jako aktywny,
- to wszystkie jego zdarzenia tego dnia mają
is_active_user = true.
W praktyce:
- użytkownik z minimalną interakcją
- i użytkownik z bardzo dużym zaangażowaniem
są traktowani identycznie.
3. Agregacja bez kontekstu sesji i zdarzeń
To podejście:
- agreguje dane bezpośrednio z poziomu eventów,
- nie daje pośredniego etapu kontroli (sesje, typy zdarzeń),
- ogranicza możliwość budowania własnych definicji aktywności.
4. To metoda „dla początkujących”
Liczenie Active Users przez is_active_user:
- jest dobre dla małych datasetów,
- sprawdza się przy szybkich raportach,
- ale nie skaluje się analitycznie.
Warto też pamiętać:
pole
is_active_useristnieje dopiero od lipca 2023
i nie występuje w starszych danych.
Bardziej poprawna logika obliczania Active Users
Oficjalna definicja Active Users w GA4 mówi, że użytkownik jest aktywny, jeśli w danym okresie:
- wygenerował engaged session,
- lub był nowym użytkownikiem,
- lub wyzwolił zdarzenie z parametrem
engagement_time_msec.

Dalsza część query:


Dlatego najlepsze podejście w BigQuery to połączenie trzech metod i ich deduplikacja.
Metoda 1: nowi użytkownicy w dniu pierwszej interakcji
Użytkownik jest aktywny, jeśli:
- jego pierwsze zdarzenie danego dnia
- przypada na dzień pierwszej interakcji (
user_first_touch_timestamp).
To identyfikuje nowych użytkowników jako aktywnych.
Metoda 2: użytkownicy z session_engaged = 1
Użytkownik jest aktywny, jeśli:
- miał co najmniej jedną sesję oznaczoną jako engaged.
To pokrywa:
- czas trwania,
- konwersje,
- wielokrotne odsłony.
Metoda 3: użytkownicy z engagement_time_msec > 0
Użytkownik jest aktywny, jeśli:
- wygenerował jakiekolwiek zdarzenie z czasem zaangażowania.
To ważne, ponieważ:
engagement_time_msecdziała na poziomie eventu,- a nie sesji,
- i może istnieć nawet wtedy, gdy
session_engaged = 0.
Dedupikacja – kluczowy krok
Każda z metod identyfikuje aktywność z innej perspektywy.
Dlatego:
- łączysz listy użytkowników (UNION DISTINCT),
- liczysz unikalne
user_pseudo_id, - unikasz wielokrotnego liczenia tej samej osoby.
To dokładnie odpowiada temu, co robi GA4 wewnętrznie.
Dlaczego różnice między zapytaniami rosną wraz z danymi?
Na małych zbiorach danych:
- oba podejścia mogą dawać podobne wyniki.
Przy dużej skali:
- miliony zdarzeń dziennie,
- złożone ścieżki użytkowników,
różnice:
- stają się coraz większe,
- a uproszczona logika zaczyna zawyżać lub zaniżać metryki.
Dlaczego zrozumienie logiki jest ważniejsze niż SQL
Gotowe zapytania SQL:
- nie skalują się do wszystkich przypadków,
- nie uwzględniają specyfiki biznesu,
- nie odpowiadają na wszystkie pytania analityczne.
Jeśli rozumiesz:
- jak GA4 definiuje Active Users,
- dlaczego łączy różne sygnały aktywności,
możesz:
- testować różne definicje,
- łączyć Active Users z innymi wymiarami,
- budować własne modele analityczne.
SQL można wygenerować automatycznie.
Logiki – nie.