Come Calcolare le Engaged Sessions in GA4 su BigQuery
Sapevi che esiste un modo visione chiara dell’attività degli utenti, distinguendo tra la semplice presenza sul sito (sessioni totali) e un’interazione più significativa (sessioni con engagement)?
Per definizione, le sessioni con engagement sono quelle sessioni che durano più di 10 secondi, o hanno uno o più eventi di conversione o due o più visualizzazioni di pagine/schermate.
Per semplificarci la vita, GA4 ha aggiunto un parametro all’evento chiamato “session_engaged”. Quando la sessione è engaged, il valore di questo parametro è 1, mentre quando non lo è il valore è 0 (il valore predefinito).
Di seguito una semplice query progettata per analizzare i dati di sessione provenienti da Google Analytics 4 (GA4), utilizzando BigQuery per calcolare il totale delle sessioni, il numero di sessioni “impegnate” (engaged sessions), e la percentuale di queste ultime rispetto al totale, nell’arco degli ultimi 30 giorni (ricordati di sostituire {table} con l’ID della tua tabella su BigQuery):
WITH SessionData AS (
SELECT
COUNT(DISTINCT CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id'))) AS total_sessions,
COUNT(DISTINCT
CASE
WHEN (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = '1'
THEN CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id'))
END) AS engaged_sessions
FROM
`your_project.your_dataset.your_table`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
)
SELECT
total_sessions,
engaged_sessions,
ROUND((engaged_sessions * 100.0 / total_sessions), 2) AS percentage_engaged_sessions
FROM
SessionData;
PS. Ricorda di sostituire your_project
, your_dataset
e your_table
con i tuoi identificativi di progetto, dataset e tabella effettivi. Queste query sono solo punti di partenza e potrebbero necessitare di personalizzazioni per adattarsi alle tue esigenze specifiche e alla struttura dei tuoi dati.
La query genererà il seguente report, importante per ottenere insight sul livello di engagement del sito web:
Di seguito il processo spiegato passo dopo passo:
1. Determinazione del Periodo di Analisi
La query filtra i dati per considerare solo quelli relativi agli ultimi 30 giorni, ma puoi tranquillamente allargare il periodo. Questo viene fatto nella clausola WHERE
, che seleziona le tabelle degli eventi basandosi su un suffisso che corrisponde a un intervallo di date. Utilizza FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
per calcolare la data di inizio (30 giorni fa) e FORMAT_DATE('%Y%m%d', CURRENT_DATE())
per la data di fine (oggi), assicurando che l’analisi sia sempre attuale e rilevante.
2. Conteggio delle Sessioni Totali
La prima parte della query, COUNT(DISTINCT CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id'))) AS total_sessions
, è responsabile del conteggio delle sessioni totali. Procediamo per punti:
- Unnest e Selezione dell’ID Sessione: Attraverso la funzione
UNNEST(event_params)
e la selezioneWHERE key = 'ga_session_id'
, estrae l’ID di ogni sessione da un array di parametri di evento. - Concatenazione per Unicità: Utilizza
CONCAT
per unireuser_pseudo_id
(un identificativo pseudonimo dell’utente) convalue.int_value
(l’ID della sessione), creando un identificatore unico per ogni sessione. - Conteggio Distinto: Con
COUNT(DISTINCT ...)
, conta ogni identificatore unico, assicurando che ogni sessione sia conteggiata una sola volta, fornendo così il numero totale di sessioni.
3. Identificazione e Conteggio delle Sessioni Coinvolte
La seconda parte della query, inserita all’interno di un COUNT(DISTINCT CASE WHEN ... END) AS engaged_sessions
, mira a identificare le sessioni che GA4 considera coinvolte basandosi su criteri specifici (durata, eventi di conversione, visualizzazioni di pagine/schermate).
- Applicazione del Criterio di Coinvolgimento: Con
CASE WHEN (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'session_engaged') = '1' THEN ... END
, la query verifica se il parametrosession_engaged
di un evento è impostato su ‘1’, indicando una sessione coinvolta. - Creazione dell’Identificatore Unico per Sessioni Coinvolte: Se il criterio è soddisfatto, utilizza nuovamente
CONCAT
per creare un identificatore unico per la sessione coinvolta, combinandouser_pseudo_id
e l’ID della sessione. - Conteggio delle Sessioni Coinvolte: Infine, conta distintamente questi identificatori unici, determinando il numero di sessioni coinvolte nel periodo specificato.
4. Risultati Finali
La query, quindi, produce due risultati principali: il numero totale di sessioni (total_sessions
) e il numero di sessioni coinvolte (engaged_sessions
), permettendo un’analisi approfondita dell’engagement degli utenti sul sito o sull’app nel corso dell’ultimo mese.
In sintesi, questa query fornisce una visione chiara dell’attività degli utenti, distinguendo tra la semplice presenza sul sito (sessioni totali) e un’interazione più significativa (sessioni coinvolte), utilizzando criteri specifici di GA4 e tecniche di aggregazione e filtraggio avanzate in BigQuery.
Data Scientist
Sono un Data Scientist con esperienza nell’applicazione di tecniche avanzate di Machine Learning per l’analisi di complessi set di dati nel campo del marketing digitale. Specializzato nell’uso di Python, sviluppo modelli predittivi e di analisi dei dati che permettono di identificare e risolvere criticità nei progetti.