Geschrieben von

GA4 in BigQuery: Nutzer zählen

Data Analytics

In Google Analytics 4 gibt es 2 Spalten bzw. Felder, die für eine Nutzer-Kalkulation herangezogen werden können:

  • user_id: Das user_id-Feld wird nicht standardmäßig erfasst, sondern muss manuell implementiert werden. Meistens ist dieses Feld an einem Nutzer-Login gebunden. Sobald sich ein Nutzer mit seiner E-Mail-Adresse anmeldet wird eine eindeutige User ID für diese E-Mail-Adresse vergeben. Meldet sich der selbe Nutzer mit der selben E-Mail-Adresse dann später über ein anderes Gerät an, dann können die Nutzer gematcht werden.
  • user_pseudo_id: Dieses Feld wird automatisch von GA4 befüllt. Damit ist eine browserspezifische ID gemeint. Im Universal Analytics-Kontext würde man von der Client ID sprechen.

Wenn man Nutzer in BigQuery zählt, dann muss man aufpassen, wenn man diese Zahlen mit den Nutzer-Zahlen in der Google Analytics 4 Benutzeroberfläche abgleichen möchte. Hier ein Screenshot aus der GA4-UI:

Hier sieht man, dass Google Analytics 4 den Nutzer als “Die Gesamtzahl der aktiven Nutzer” definiert. Nach meinem aktuellen Verständnis werden dabei nur Nutzer herangezogen, die eine Sitzung mit Interaktion durchgeführt haben. Sprich:

  • Sitzung mit mindestens 10 Sekunden oder
  • mindestens ein Conversion-Ereignis ausgelöst oder
  • mindestens zwei Seitenaufrufe generiert.

Für einen Abgleich eignet sich daher die explorative Datenanalyse, mit der man eigene Reports bauen kann. Dort wählt man die Metrik “Nutzer insgesamt”:

Diese Metrik ist definiert als “Die Gesamtzahl der Nutzer, die mit Ihrer Website oder App interagiert haben, unabhängig davon, ob sie ein Interaktionsergebnis ausgelöst haben oder nicht”.

Hinweis zur Tabelle
Die SQL-Abfragen basieren auf dem BigQuery-Beispiel-Datenset für Google Analytics 4 E-Commerce. Stelle sicher, dass du in der FROM-Klausel deine Tabelle auswählst.

Nutzer zählen

Da in BigQuery jede Zeile ein Event darstellt, reicht es nicht aus einfach die Spalte “user_pseudo_id” zu wählen und zählen, da man sonst viele Doppelungen hat (ein Nutzer kann mehrere Events auslösen). Deshalb braucht es neben der COUNT()-Funktion auch die DISTINCT-Klausel:

SELECT
  COUNT(DISTINCT user_pseudo_id) AS users
FROM
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`

Anzahl Nutzer anhand Traffic-Quelle zählen

Die Anzahl der Nutzer alleine ist nicht immer relevant; erst mit der Verknüpfung weiterer Dimensionen werden die Auswertungen interessanter. So bspw. wie viele Nutzer von welchen Traffic-Quellen auf die Website gekommen sind. In BigQuery gibt es dazu die Spalte “traffic_source”:

Innerhalb der Spalte gibt es 3 Felder: name, medium und source. Unter “name” fließt der Kampagnen-Name rein. “medium” und “source” bilden die adäquaten Werte aus den UTM-Parametern. Um die 3 Felder direkt abzufragen muss zwischen “traffic_source” und dem entsprechenden Feld ein Punkt gesetzt werden. Zudem muss man beachten, dass die traffic_source-Informationen an den Nutzer gebunden sind. Was heißt das? Die Informationen beinhalten die Traffic-Quelle des Nutzers, über die er zum ersten Mal auf die Seite kam. Kommt der Nutzer zum zweiten Mal auf die Website, dann beinhalten die traffic_source-Felder weiterhin die Traffic-Quellen des ersten Aufrufs.

Zurück zur Anfrage: Um die Anzahl der Nutzer nach Traffic-Quelle zu bekommen, zählen wir also zum einen die Nutzer und zum anderen wählen wir die entsprechenden traffic_source-Felder. Da wir mittels COUNT() eine Kalkulation haben, müssen wir auch ein GROUP BY hinzufügen. Bei der GROUP BY-Klausel gruppieren wir nach den traffic_source-Feldern. Hier müssen wir das “traffic_source” nicht mehr voranstellen, sondern können direkt nur den Feldnamen schreiben.

SELECT
  traffic_source.source,
  traffic_source.medium,
  traffic_source.name,
  COUNT(DISTINCT user_pseudo_id) AS users
FROM
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`
GROUP BY
  source,
  medium,
  name
ORDER BY
  users DESC;