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_projectyour_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 selezione WHERE key = 'ga_session_id', estrae l’ID di ogni sessione da un array di parametri di evento.
  • Concatenazione per Unicità: Utilizza CONCAT per unire user_pseudo_id (un identificativo pseudonimo dell’utente) con value.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 parametro session_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, combinando user_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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

error: Questo contenuto è protetto!