SQL: Liczba sesji ze zgodą lub bez, wraz ze źródłem i medium

miniatura yt 1 1902 1080 scroll 2 ga4,bq 04 2026

Większość stron ma dziś wdrożony Consent Mode w wersji advanced – dane lecą do Google Analytics nawet bez zgody użytkownika, ale w formie zanonimizowanej. Problem? Tych danych nie zobaczysz w raportach GA4, chyba że masz włączone modelowanie. A czy modelowanie faktycznie pokazuje poprawne liczby? To już inna historia.

Poniższy SQL pozwala mi sprawdzać liczbę sesji wraz ze źródłem/medium z podziałem na zgodę i brak zgody. Jest to przydatne nawet wtedy, gdy w GA4 masz aktywne modelowanie danych, ponieważ daje kontrolę nad tym ile sesji rozpoczynają konkretne źródła. A także zobaczysz jaki % użytkowników tak naprawdę rozpoczyna swoje sesji bez zgód na śledzenie.


Podsumowanie audio NotebookLM: posłuchaj wygenerowany podcast.


Uwaga 🚨: Ten kod zadziała tylko, jeśli masz wdrożony Consent Mode v2 i masz aktywne połączenie Google Analytics z BigQuery.

WITH InitialData AS (
  SELECT
    event_date,
    event_name,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'medium') AS medium_raw,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'source') AS source_raw,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'campaign') AS campaign_raw,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'term') AS utm_term_raw,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'content') AS utm_content_raw,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer') AS page_referrer_raw,
    privacy_info.analytics_storage,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS session_id 
  FROM
    `test-bk-1567a.analytics_377239886.events_*`
  WHERE
    event_name = 'session_start'
    AND COALESCE((SELECT value.string_value FROM unnest(event_params) WHERE key = 'page_referrer'), '') NOT LIKE '%test.pl%' --tutaj wpisz adres swojej strony

    --użyj poniższej opcji jeśli chcesz sprawdzać dane z dnia dzisiejszego
    --and regexp_extract(_table_suffix, r'[0-9]+') = format_date('%Y%m%d', current_date())

    --użyj poniższej opcji jeśli chcesz dopisywać do tabeli dane z poprzedniego dnia
    --and regexp_extract(_table_suffix, r'[0-9]+') = format_date('%Y%m%d',date_sub(current_date(), interval 1 day))

    --użyj poniższej opcji jeśli chcesz dopisywać do tabeli dane z przedwczorajszego dnia
    --and regexp_extract(_table_suffix, r'[0-9]+') = format_date('%Y%m%d',date_sub(current_date(), interval 2 day))

    --użyj poniższej opcji jeśli chcesz nadpisywać dane w tabli do dnia wczorajszego
    --and regexp_extract(_table_suffix, r'[0-9]+') between '20240401' and format_date('%Y%m%d',date_sub(current_date(), interval 1 day))
)

SELECT
  event_date,
  event_name,
  COALESCE(medium_raw, '(none)') AS medium,
  COALESCE(source_raw, '(direct)' ) AS source,
  COALESCE(campaign_raw, '(not set)') AS campaign,
  COALESCE(utm_term_raw, '(not set)') AS utm_term_session,
  COALESCE(utm_content_raw, '(not set)') AS utm_content_session,
  page_referrer_raw AS page_referrer,
  analytics_storage,
  COUNT(*) AS count_event
FROM
  InitialData
  
GROUP BY
  event_date,
  event_name,
  medium, 
  source, 
  campaign, 
  utm_term_session, 
  utm_content_session, 
  page_referrer,
  analytics_storage
ORDER BY
  count_event DESC

Dlaczego ten SQL jest tak ważny?

  • Weryfikacja modelowania GA4: Pozwala sprawdzić, czy modelowane dane w raportach GA4 odzwierciedlają rzeczywistość.
  • Odkrycie ukrytego ruchu: Ujawnia, ile sesji i z jakich źródeł pochodzi od użytkowników bez zgody na śledzenie. Możesz się zdziwić, jak duży to procent.
  • Lepsze decyzje mediowe: Jeśli widzisz, że np. duża część ruchu z konkretnego kanału to użytkownicy bez zgody, wiesz, że Twoje raporty w GA4 mogą zaniżać wyniki tego kanału.

🚀 Wnioski? Czasem okazuje się, że spory procent sesji pochodzi od użytkowników bez zgody – a to oznacza, że Twoje decyzje oparte wyłącznie na raportach GA4 mogą być obarczone błędem.


Spis treści:
00:00 Wstęp
00:44 Połączenie GA4 i BigQuery
01:56 Zbiór danych i Analytics storage
03:27 SQL consent mode source/medium
08:03 Podgląd raportu Looker Studio
10:22 Ustawianie okresu danych i harmonogram zapytania SQL
14:29 Zakończenie

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *