Approssimazione del conteggio unico in Google Analytics

Minhaz Kazi, Developer Advocate, Google Analytics – Ottobre 2022

La misurazione di conteggi esatti (ovvero la cardinalità) per set di dati di grandi dimensioni richiede una memoria significativa e influisce sulle prestazioni. Le proprietà Google Analytics 4 utilizzano l'algoritmo HyperLogLog+ (HLL++) per stimare la cardinalità per le metriche più utilizzate, tra cui Utenti attivi e Sessioni. Ad esempio, se visualizzi la sezione Utenti attivi nell'interfaccia utente di Google Analytics e tramite l'API di dati, il conteggio sarà un'approssimazione. L'utilizzo di HLL++ per queste metriche garantisce prestazioni migliori con una stima più precisa e limiti di errore inferiori. Questo blogpost fornisce dettagli su come viene utilizzato HLL++ nelle proprietà Google Analytics 4 e su come replicare alcune stime utilizzando i dati di esportazione degli eventi BigQuery.

Informazioni su HLL++

HLL++ stima la cardinalità, utilizzando meno memoria e migliorando le prestazioni. HLL++ ha miglioramenti apportati all'algoritmo HyperLogLog e si basa su HyperLogLog in Practice: Algorithmic Engineering of a State of the Art Cardinality Estimation Algorithm. Le modifiche nel parametro precision dell'HLL++ compromettono l'utilizzo della memoria e l'accuratezza delle statistiche calcolate. L'aumento del valore del parametro riduce l'errore, ma aumenta il consumo di memoria.

Implementazione del conteggio univoco in BigQuery

  • Utilizza COUNT(DISTINCT) per misurare la cardinalità esatta. Questo approccio richiede più memoria e richiede più tempo, soprattutto per set di dati di grandi dimensioni.
  • APPROX_COUNT_DISTINCT esegue un'approssimazione dei risultati con HLL++. Tuttavia, APPROX_COUNT_DISTINCT non consente agli utenti di configurare la precisione dell'approssimazione.
  • Per utilizzare valori precision personalizzati, utilizza le funzioni HyperLogLog++. Consulta Sket HLL++ per i valori precision consentiti e gli intervalli di confidenza per le precisione tipiche.
  • sparse precision è un altro parametro per HLL+. In BigQuery, il valore sparse precision non è definibile dall'utente ed è fisso su precision + 5.

Implementazione di HLL++ nelle proprietà Google Analytics 4

Google Analytics 4 utilizza la seguente configurazione per misurare la cardinalità delle metriche correlate.

Metrica precision sparse precision
Sessions (Sessioni) 12 17
Utenti attivi 14 25
Utenti totali 14 25

Utilizzo delle funzioni HLL++ di BigQuery con i dati degli eventi di Google Analytics

Se i dati sugli eventi della proprietà Google Analytics 4 sono disponibili in BigQuery, puoi provare ad abbinare le metriche della UI ai dati di BigQuery. Presuppongono i seguenti esempi:

  • L'identificatore report è impostato su By device only per la proprietà Google Analytics 4.
  • Sono già state gestite altre potenziali fonti di discrepanza, ad esempio il fuso orario dei report.

Totale utenti

Conteggio esatto utilizzando COUNT(DISTINCT):

SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Conteggio approssimativo utilizzando APPROX_COUNT_DISTINCT:

SELECT
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Puoi replicare APPROX_COUNT_DISTINCT utilizzando le funzioni HLL++ di BigQuery. Verranno restituiti i risultati identici o molto simili a APPROX_COUNT_DISTINCT:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 15)) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Infine, per replicare i dati nella UI di Google Analytics, utilizza precision = 14:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Utenti attivi

Per calcolare il conteggio degli utenti attivi dalla tabella di esportazione degli eventi BigQuery, devi prima filtrare gli eventi solo per gli Utenti attivi. L'implementazione del filtro Utente attivo non rientra nell'ambito di questo articolo.

WITH ActiveUsers AS
(
  SELECT
    user_pseudo_id
  FROM
    `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE
  <implement active user filter logic>
)
SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS active_user_count,
FROM ActiveUsers

Sessioni

Il parametro evento ga_session_id identifica singole sessioni uniche per ogni utente. La combinazione di user_pseudo_id e ga_session_id sarà unica nel tuo set di dati per le sessioni univoche. Questo è il metodo standard di conteggio delle sessioni per le proprietà Google Analytics 4. Per le sessioni, precision è 12.

SELECT
  HLL_COUNT.EXTRACT(
    HLL_COUNT.INIT(
      CONCAT(
        user_pseudo_id,
        (SELECT `value` FROM UNNEST(event_params) WHERE key = 'ga_session_id' LIMIT 1).int_value),
      12)) AS session_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Puoi utilizzare le query in questo post del blog con gli esempi di query di base e query avanzate per ottenere ulteriori approfondimenti dai dati delle esportazioni di eventi BigQuery per le proprietà Google Analytics 4. Se la proprietà genera una quantità significativa di dati sugli eventi, puoi anche implementare le funzioni HLL++ per stimare la cardinalità di altre metriche comunemente utilizzate nelle query BigQuery. Per scoprire di più su HLL++ e sul perché il calcolo della cardinalità è costoso per set di dati di grandi dimensioni, leggi il post del blog approfondito sul blog di Cloud: Using HLL++ to velocizza conteggio-distinct in set di dati di grandi dimensioni.