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 valoriprecision
consentiti e gli intervalli di confidenza per le precisione tipiche. sparse precision
è un altro parametro per HLL+. In BigQuery, il valoresparse precision
non è definibile dall'utente ed è fisso suprecision + 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.