hello@newnorth.nl+31 (0) 85 401 31 62
/Journal

Kardinaliteit in GA4: waarom die rij (other) in je rapport staat

NaslagAnalytics2023.04.01
Freek Kampen
Freek KampenMede-oprichter, New North Digital

Te veel unieke waarden in één dimensie en GA4 gooit de rest op één hoop: (other). Wat het veroorzaakt en hoe je eronder blijft.

Wat kardinaliteit is

Kardinaliteit is het aantal unieke waarden in een dimensie. Apparaatcategorie heeft er drie: desktop, mobile, tablet. Dat is lage kardinaliteit.

Paginalocatie heeft er op een webshop met filters en zoekparameters al snel honderdduizenden. Dat is hoge kardinaliteit, en daar begint het probleem.

GA4 bouwt zijn standaardrapporten op dagtabellen met een maximum aantal rijen. Komt een dimensie daarboven, dan houdt GA4 de meest voorkomende waarden apart en telt de rest bij elkaar op in één rij: (other).

Waarom (other) erger is dan het lijkt

De cijfers kloppen nog. Je totalen blijven kloppen, want de weggevallen waarden zitten in die ene rij.

Wat je kwijt bent, is de uitsplitsing. Je kunt niet zien welke pagina's, campagnes of producten in (other) zijn beland, en je kunt er niet op filteren of segmenteren.

Erger: het is onomkeerbaar. Zodra GA4 een dag heeft samengevoegd, is de detailinformatie voor die dag uit de rapportage verdwenen. Je tagging morgen opschonen helpt voor morgen, niet voor vorige maand.

Je ziet het vaak het eerst in de standaardrapporten. Verkenningen halen hun data op een andere manier op, maar ook daar kan (other) opduiken zodra je query te veel unieke combinaties oplevert.

Wat het in de praktijk veroorzaakt

  • page_location met querystrings. Elke ?filter=rood&sort=prijs&page=3 is een eigen waarde. Voeg daar nog gclid, fbclid en een handvol utm_-parameters aan toe en één productpagina wordt duizenden rijen. Dit is veruit de meest voorkomende oorzaak.
  • Een aangepaste dimensie gevuld met een order-ID of transactie-ID. Per definitie uniek per gebeurtenis. Eén verkoop, één nieuwe waarde. Dit blaast je rapport in een week op.
  • Een tijdstempel als dimensiewaarde. Zelfde verhaal, alleen sneller. Op de seconde nauwkeurig betekent letterlijk elke hit een unieke waarde.
  • Gebruikersnaam, e-mailadres of klantnummer in een dimensie. Hoge kardinaliteit, en daarbovenop een probleem met persoonsgegevens.
  • Productnamen met varianten. "T-shirt blauw M", "T-shirt blauw L", "T-shirt rood M". Honderd modellen met vijf maten en acht kleuren zijn vierduizend itemnamen. Zet de variant in item_variant en houd item_name op het model.

Hoe je eronder blijft

Zet geen unieke ID's in een aangepaste dimensie. Dit is de hardste regel. Order-ID's, sessie-ID's en tijdstempels horen niet in een dimensie die je in rapporten gebruikt. Wil je op transactieniveau analyseren, dan doe je dat in BigQuery.

Schoon je URL's op. Verwijder parameters die niets toevoegen aan je analyse voordat de tag afvuurt, of gebruik in GA4 de instelling voor het negeren van queryparameters bij de gegevensstroom. Welke parameters je wel houdt en waarom, behandelden we in het artikel over queryparameters.

Kort je periode in. GA4 hanteert de grens per dag. Vraag je een rapport over drie maanden op, dan stapelen de unieke waarden zich op. Dezelfde analyse per week of per dag geeft vaak wel de uitsplitsing die je zoekt.

Gebruik minder waarden per dimensie. Groepeer waar je kunt. Een dimensie met twintig productcategorieën is bruikbaar, een dimensie met vierduizend artikelnamen niet.

Ga naar BigQuery als je het per waarde moet zien. De export bevat elke gebeurtenis los, zonder samenvoeging en zonder (other). Daar kun je wel op order-ID groeperen.

SELECT
  REGEXP_REPLACE(
    (SELECT value.string_value FROM UNNEST(event_params)
     WHERE key = 'page_location'),
    r'\?.*$', '') AS pagina,
  COUNT(*) AS weergaven
FROM `mijn-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20240101' AND '20240131'
  AND event_name = 'page_view'
GROUP BY pagina
ORDER BY weergaven DESC

Diezelfde query zonder de REGEXP_REPLACE laat je zien hoeveel unieke URL's je per dag produceert. Dat getal is je echte kardinaliteitsprobleem.

Wat je hiermee doet

  • Kijk in je rapporten waar (other) opduikt. Staat hij hoog in de lijst, dan mis je meer dan je denkt.
  • Haal order-ID's, transactie-ID's, tijdstempels en gebruikersnamen uit je aangepaste dimensies. Controleer ook de dimensies die al jaren meelopen.
  • Schoon je URL's op of negeer de overbodige queryparameters op je gegevensstroom.
  • Splits een analyse op in kortere periodes voordat je concludeert dat de data ontbreekt.
  • Zet de BigQuery-export aan voor alles wat je per unieke waarde wilt zien. Dat is de enige plek waar (other) niet bestaat.

Wil je hierover doorpraten?

Praten over jouw data?

Vertel ons over je stack, je doelen en de data die je nu mist.

Duurt 1 minuut