Real Time Report con GA4, BigQuery e Looker Studio

RealTimeData

Una delle principali “pecche” di GA4 è sicuramente rappresentata dal Real Time reporting: con Universal Analytics ci eravamo infatti abituati a visualizzare i dati nel “vero tempo reale”, ovvero praticamente nell’immediato era possibile conoscere come performava una campagna, una pagina oppure se il tracking creato generava correttamente dati.

Vi riporto sotto un esempio del suddetto report Real Time, tanto per farvi scendere una lacrimuccia.

RealTime Universal Analytics

Come riportato sopra, è praticamente impossibile ottenere questa visualizzazione direttamente in GA4 ma.. ma è possibile ricostruirlo se:

  • GA4 viene collegato con BigQuery
  • Vengono generate due query in BigQuery
  • Si connette BigQuery a Looker Studio e si modificano alcune impostazioni delle risorse aggiunte.

Detta così sembra un’impresa epica.. e lo è da un certo punto di vista ma se seguirete quanto riportato di seguito e soprattutto nel video sotto la procedura risulterà semplificata di molto.

Perché creare una dashboard realtime per GA4?

Avere una dashboard in “near” Real Time con i dati di GA4 è utile in quanto, rispetto a quella attualmente presente nei report standard, permette di:

  • Monitorare i principali KPI aziendali
  • Intervenire immediatamente in caso di problemi
  • Valutare subito eventuali scostamenti dai target aziendali
  • Valutare la resa immediata di campane advertising appena lanciate

In Google Analytics 4, il Real Time report è basato sugli ultimi 30 minuti risulta impossibile analizzare i dati oltre questo arco temporale; inoltre riscontriamo spesso un data lag dovuto alla collection delle informazioni che rendono impossibili le analisi dei dati.

Creazione del report Real Time per GA4

Di seguito potete trovare il video con la spiegazione di tutti i passaggi necessari alla creazione della dashboard mentre, più sotto, sono riportate le query ed alcuni passaggi fondamentali! PS: se ti è piaciuto il video, lascia un like, un commento e iscriviti al canale YouTube!

Verifica connessione GA4 e BigQuery

Come prima cosa, bisogna verificare che ci sia la connessione diretta tra GA4 e BigQuery e che, soprattutto, il data flow sia attivato a livello giornaliero.

Queste informazioni si possono trovare sotto Property GA4 > Products Links > BigQuery Links; all’interno della schermata, se attiva, controllate che le due spunte riportate di seguito siano attive. La prima identifica il daily export, la seconda permette l’export continuo dei dati da GA4 a BigQuery

BigQuery EXport type

Accesso a BigQuery e creazione delle Query

Una volta effettuato l’accesso a BigQuery basta selezionare il progetto di interesse ed individuare la tabella “events_intraday_” -dove potete visualizzare lo schema, i dettagli, ecc- e selezionare, dal menu in head (blu) la voce “Query”.

BigQuery Intraday Table

Si aprirà un blank space dove dovrete inserire il seguente script:

SELECT
PARSE_DATE('%Y%m%d', event_date) as mainevent_date,
event_timestamp,
EXTRACT(DATETIME FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE "Europe/Rome") as date_time,
EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE "Europe/Rome") as date_time_hour,
EXTRACT(MINUTE FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE "Europe/Rome") as date_time_minute,
CASE EXTRACT(DATE FROM TIMESTAMP_MICROS(user_first_touch_timestamp) AT TIME ZONE "Europe/Rome")
WHEN CURRENT_DATE("Europe/Rome") THEN "New User"
ELSE "Returning User"
END as user_type,
event_name,
(SELECT value.string_value FROM UNNEST(event_params) WHERE KEY = "page_location") as page_url,
REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params) WHERE KEY = "page_location"), r'\?.*', '') as cleaned_page_url,
REGEXP_REPLACE(REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params) WHERE KEY = "page_location"), CONCAT(LOWER('https://'), LOWER(device.web_info.hostname)), ''), r'\?.*', '') as page_path,
user_pseudo_id,
CONCAT((SELECT value.int_value FROM UNNEST(event_params) WHERE KEY = "ga_session_id"), user_pseudo_id) as sessionId,
device.category,
device.web_info.hostname,
device.web_info.browser,
geo.country,
geo.region,
geo.city,
stream_id,
platform,
count (event_name) as event_count
FROM `<Nome Tabella Intraday>`
WHERE PARSE_DATE('%Y%m%d',event_date) = CURRENT_DATE("Europe/Rome")
GROUP BY
mainevent_date,
event_timestamp,
date_time,
date_time_minute,
date_time_hour,
user_type,
event_name,
page_url,
cleaned_page_url,
page_path,
user_pseudo_id,
sessionId,
device.category,
device.web_info.hostname,
device.web_info.browser,
geo.country,
geo.region,
geo.city,
stream_id,
platform
ORDER BY date_time_hour DESC, date_time DESC

Ottenendo un risultato simile al seguente:

RealtimeDataNoparams

Successivamente è necessario creare la seguente query:


SELECT
event_date,
event_name,
event_timestamp,
user_pseudo_id,
CONCAT((SELECT value.int_value FROM UNNEST(event_params) WHERE KEY = "ga_session_id"), user_pseudo_id) as sessionId,
-- count (event_name) as number_of_times_included,
params.key as event_parameter_key,
case when params.value.string_value is not null then 'string'
when params.value.int_value is not null then 'int'
when params.value.double_value is not null then 'double'
when params.value.float_value is not null then 'float'
else null end as event_parameter_value
FROM `<Nome Tabella Intraday>`,
unnest(event_params) as params
WHERE PARSE_DATE('%Y%m%d',event_date) = CURRENT_DATE("Europe/Rome")
group by
event_date,
event_name,
event_timestamp,
event_parameter_key,
user_pseudo_id,
sessionID,
event_parameter_value
order by
event_name,
event_parameter_key

Il risultato sarà uguale al precedente.

La prima query serve per definire le dimensioni e le metriche di interesse, la seconda query serve ad estrarre i parametri di riferimento.

Bisogna fare attenzione a due elementi:

  • Current_date è impostato sulla time zone di Roma
  • FROM deve contenere la denominazione della tabella intraday

Entrambi i campi sono modificabili a seconda delle necessità di analisi.

Salvataggio delle query e creazioni delle viste

A questo punto bisogna salvare le due query creando delle viste.

Per far questo basta semplicemente cliccare su Save dal menu drilldown selezionare Save View, come riportato nello screenshot sotto.

SaveView BigQuery

A questo punto vi troverete, oltre alle tabelle presenti nel progetto, due nuove viste dedicate alle query che avete inserito precedentemente.

Connettere BigQuery a Looker Studio

Ci siamo quasi!

A questo punto basta connettere le viste create in BigQuery con Looker Studio, attraverso il connettore di default

Looker Studio BigQuery connector

Selezionare il progetto di riferimento, il dataset e le viste di riferimento (quelle che avete creato prima).

Una volta importati i dataset dove effettuare una modifica relativa alla data freshness: andate su Resources > Manage Data Sources > Selezionate la sorgente di interesse > Edit e selezionate “Data Freshness” in alto e nella modale impostate 1 minuto.

In questo modo i dati saranno aggiornati ogni minuto

Data Freshness bigquery looker studio

Da questo momento in avanti potete creare i report di interesse basati sui dati Real Time, come il trend dell’evento page_view che trovate qui sotto:

Realtime trend ga4

Query credits: dumbdata.co

Leave a reply

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