Approssimazione del conteggio unico in Google Analytics

Minhaz Kazi, consulente per gli sviluppatori, Google Analytics – Ottobre 2022

La misurazione di conteggi distinti esatti (ovvero la cardinalità) per set di dati di grandi dimensioni richiede memoria significativa e influisce sulle prestazioni. Le proprietà Google Analytics 4 utilizzano Algoritmo HyperLogLog++ (HLL++) per stimare la cardinalità per le metriche più utilizzate incluse le metriche Utenti attivi e Sessioni. Ad esempio, quando visualizzi lo stato Utenti nell'interfaccia utente di Google Analytics e tramite l'API di dati, il numero sarà un'approssimazione. L'uso di HLL++ per queste metriche garantisce una migliore con una stima più precisa e limiti di errore inferiori. Questo il post del blog fornisce dettagli su come viene utilizzato HLL++ nelle proprietà Google Analytics 4 e come replicare alcune stime utilizzando l'esportazione di eventi BigQuery e i dati di Google Cloud.

Informazioni su HLL++

HLL++ stima la cardinalità, utilizzando meno memoria e migliorando le prestazioni. HLL++ include miglioramenti apportati all'algoritmo HyperLogLog e si basa su Pratica di HyperLog in: ingegneria algoritmica di uno stato dell'arte Algoritmo di stima della cardinalità. Modifiche nel parametro HLL++ precision tra l'utilizzo della memoria e l'accuratezza delle statistiche calcolate. L'aumento del 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 e richiede più tempo, soprattutto per set di dati di grandi dimensioni.
  • APPROX_COUNT_DISTINCT approssima i risultati con HLL++. Tuttavia, APPROX_COUNT_DISTINCT non consente agli utenti di configurare l'approssimazione la precisione.
  • Per utilizzare i valori precision personalizzati, usa le funzioni HyperLogLog++. Consulta Sketch HLL++ per i valori precision consentiti e il livello di confidenza intervalli per le precisione tipiche.
  • sparse precision è un altro parametro per HLL+. In BigQuery, il valore di 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 le metriche correlate.

Metrica precision sparse precision
Sessioni 12 17
Utenti attivi 14 25
Utenti totali 14 25

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

Se i dati sugli eventi della proprietà Google Analytics 4 sono disponibili in BigQuery, puoi provare a far corrispondere le metriche della UI ai dati di BigQuery. I seguenti esempi supponi:

  • L'identificatore report è impostato su By device only per Google Analytics 4 proprietà.
  • Altre potenziali fonti di discrepanza, ad es. del fuso orario dei report, sono già gestiti.

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 con 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. Questo restituirà risultati identici o molto simili di 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 devi filtrare gli eventi solo in base agli Utenti attivi. Implementazione dell'opzione Attiva Il filtro utente 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à univoci nel set di dati per sessioni univoche. Questo è il metodo standard 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 di questo blog post con le Query di base e Esempi di query avanzate per ottenere ulteriori insight dall'evento BigQuery. Esportare i dati per le proprietà Google Analytics 4. Se la proprietà genera una notevole quantità di dati sugli eventi, puoi anche implementare le funzioni HLL++ stimare la cardinalità di altre metriche che usi abitualmente in BigQuery query. Per saperne di più su HLL++ e sui motivi per cui il calcolo della cardinalità è costoso per set di dati di grandi dimensioni, leggi il post del blog approfondito sul blog Cloud: Utilizzo di HLL++ per accelerare il conteggio distinto in set di dati di grandi dimensioni.