Durch Anklicken „Akzeptieren“, stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Seitennavigation zu verbessern, die Nutzung der Website zu analysieren und unsere Marketingaktivitäten zu unterstützen. Sehen Sie sich unsere an Datenschutzrichtlinie für weitere Informationen.
Sep 4, 2024
Google Analytics

Extrahieren Sie Sessions und Engagement aus GA4 mit BigQuery

Verwenden Sie GA4-Rohdaten in BigQuery. Von Sanu Maharjan

Wenn Sie GA4 verwenden, um Ihre Website oder App zu verfolgen, kann es sehr aufschlussreich sein, sich die Sitzungen und das Engagement anzusehen. Schauen wir uns ohne Verzögerung zunächst an, wie Sitzungen und Engagement in GA4 definiert sind und wie wir sie dann nach Bigquery extrahieren können.

Sessions

Eine Sitzung wird ausgelöst, wenn eine der folgenden Bedingungen erfüllt ist:

  • Der Benutzer öffnet Ihre Website oder App
  • Der Benutzer betrachtet eine Seite oder einen Bildschirm (vorausgesetzt, dass keine anderen Sitzungen aktiv sind)

Hinweis: Eine Sitzung dauert in der Regel 30 Minuten. Das heißt, wenn ein Benutzer auf Ihre Website geht und nach 31 Minuten zurückkommt, beginnt eine neue Sitzung.

Sessions können nützlich sein, um zu sehen, wie viele Nutzer kommen oder deine Plattform besuchen, aber es wäre interessanter zu sehen, wie viele von ihnen irgendeine Art von „Engagement“ haben. Dann schauen wir uns an, wie Engagement von Google definiert wird.

Engagierte Sessions

In GA4 gilt eine Sitzung als besetzt, wenn:

  • Es gibt 2 oder mehr Seitenansichten ODER
  • Es gibt ein oder mehrere Konversionsereignisse ODER
  • Der Benutzer hält länger als 10 Sekunden durch

Hinweis: Wenn du der Meinung bist, dass 10 Sekunden zu kurz für eine aktive Sitzung sind, kannst du die Zeit in deinem GA-Konto manuell auf bis zu 60 Sekunden ändern.

Jetzt bleibt die Frage, wie die Daten für Sitzungen und engagierte Sitzungen extrahiert werden können. Wenn Sie sich die GA4-Rohdaten ansehen, gibt es keine direkte Antwort. Der Trick besteht also darin, ga_session_id und user_pseudo_id zu zählen, indem Sie die folgende Abfrage ausführen:

  
WITH prep AS(
  SELECT
    PARSE_DATE('%Y%m%d', event_date) AS event_date,
    user_pseudo_id,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id,
    CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) AS session_id,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') AS engaged_sessions,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') AS engagement_time_msec,

  FROM `PROJECT_NAME.analytics_PROPERTY_ID.events_*`
  
  WHERE TRUE
    AND _TABLE_SUFFIX BETWEEN '20220601' AND FORMAT_DATE('%Y%m%d', DATE_SUB( CURRENT_DATE(), INTERVAL 1 DAY))
)

SELECT
  event_date,

  COUNT(DISTINCT session_id) AS num_of_sessions,
  COUNT(DISTINCT 
    CASE
      WHEN engaged_sessions = '1' THEN CONCAT(user_pseudo_id, ga_session_id) ELSE NULL
    END) AS num_of_engaged_sessions,
  AVG(engagement_time_msec) AS engagement_time_msec

FROM prep

GROUP BY event_date

ORDER BY event_date DESC

 

Kurze Erklärung, was hinter den Kulissen passiert: Zuerst habe ich eine Unterabfrage namens prep erstellt (wie in Vorbereitung). In der Prep-Unterabfrage habe ich parsed event date und user_pseudo_id ausgewählt.

Als Nächstes habe ich das event_params Array UNNEST und wähle nur die Werte aus, die den Schlüssel = 'ga_session_id' haben. Diese Werte werden mit 'int_value' gespeichert, was bedeutet, dass es sich um INT64-Datentypen handelt. Hier ist ga_session_id ein Zeitstempel, wenn ein Benutzer Ihre Plattform betritt. Wir können nicht einfach ga_session_id ZÄHLEN und sie als Anzahl von Sitzungen bezeichnen. Der Grund dafür ist, dass, wenn zwei Benutzer gleichzeitig deine Plattform betreten, beide dieselbe ga_session_id haben.

Dann lösche ich für session_id zuerst event_params und extrahiere Integer-Werte mit key = 'ga_session_id' und verkette dann user_pseudo_id und ga_session_id. Dadurch hätten auch mehrere Benutzer, die die Plattform gleichzeitig betreten, eine andere session_id.

In ähnlicher Weise habe ich für engaged_session und engagement_time_msec die event_params Spalte UNNEST und wähle dann nur die Schlüssel aus, die 'session_engaged' bzw. 'engagement_time_msec' sind. Beachten Sie auch, dass die Werte von session_engaged Zeichenketten sind, wohingegen es sich bei engagement_time_msec um eine Ganzzahl handelt und sie in Mikrosekunden gemessen werden.

Am Ende habe ich nach Event_Date gruppiert und dann die DISTINCT session_id für die Anzahl der Sitzungen GEZÄHLT, und wenn es eine Engagement-Sitzung gibt, habe ich erneut COUNT session_id und nehme die durchschnittliche engagierte Zeit in Mikrosekunden.

Fazit

Mit einer solchen Abfrage kann man Informationen darüber erhalten, wie viele Sitzungen ausgelöst wurden und wie viele an diesen Sitzungen teilgenommen haben, und auch, wie lange sie durchschnittlich für das Engagement gedauert haben. Im nächsten Beitrag werde ich weitere Fragen zum Extrahieren von Daten aus RAW-GA4 aufschreiben.

Weitere Links

Folge uns auf LinkedIn für Einblicke in unsere tägliche Arbeit und wichtige Updates zu BigQuery, Data Studio und Marketing Analytics.

Abonniere unseren YouTube-Kanal für Diskussionen zu DWH, BigQuery, Looker Studio und Google Tag Manager.

Wenn Sie BigQuery von Grund auf lernen möchten, erhalten Sie Zugriff auf unsere kostenloser BigQuery-Kurs

Verbessern Sie Ihre Fähigkeiten mit Google Data Studio und BigQuery, indem Sie sich für unser Udemy-Kurs.

Benötigen Sie Hilfe bei der Einrichtung eines modernen, kostengünstigen Data Warehouse oder eines analytischen Dashboards? Senden Sie uns eine E-Mail an hello@datadice.io um einen Anruf zu vereinbaren.