La Funzione UNNEST: Pilastro dell’Analisi Dati Avanzata in BigQuery

Nel contesto dei database e dell’elaborazione di query, in particolare in ambienti come BigQuery, la funzione UNNEST assume un ruolo cruciale nella manipolazione e nell’analisi di strutture dati complesse. Questa funzione è impiegata per destrutturare o espandere array o liste annidate, trasformandoli in un insieme di righe tabellari, facilitando così operazioni di query successive su ciascun elemento contenuto.

Spieghiamolo ad un bambino di 4 anni.

Immagina di avere una scatola piena di piccole scatoline, ognuna contenente diversi oggetti. Se volessi vedere tutti gli oggetti insieme, dovrei aprire ogni piccola scatolina e disporre il contenuto su un tavolo. In termini di database, questa operazione è molto simile a quello che fa UNNEST.

Nel contesto di BigQuery e delle query SQL, UNNEST è una funzione che prende una lista di elementi raggruppati insieme (come le nostre piccole scatoline) e li “apre”, o “disanida”, per trasformarli in una serie di righe che possono essere facilmente esaminate o analizzate. Quindi, se hai dei dati che sono raggruppati in array o liste e vuoi lavorare con ciascun elemento individualmente, utilizzeresti UNNEST per “spargere” questi elementi in modo che ogni pezzo diventi accessibile singolarmente.

Riassumendo, UNNEST ti aiuta a passare da avere un “mucchio” di elementi confezionati insieme ad avere ciascuno di questi elementi disposti ordinatamente in fila per essere analizzato o processato più facilmente.

PS. Prima di procedere, ti consiglio di approfondire l’argomento su come sono organizzati i dati in BigQuery.

I campi della tabella “events” che richiedono un UNNEST sono quelli di tipo RECORD:

Come effettuare un UNNEST del campo “event_params”

Un esempio di campo della tabella “events” che gioca un ruolo fondamentale e che richiede un UNNEST è event_params . Questo campo rappresenta un array di strutture chiave-valore che cattura dettagli specifici relativi a ciascun evento tracciato. Ogni elemento all’interno di event_params fornisce informazioni aggiuntive su un evento, come il tipo di evento, l’ID della sessione, se la sessione è stata considerata coinvolta, e altri dati specifici dell’interazione dell’utente.

La query che segue, consente di fare un UNNEST dell’evento “page_view” consentendo l’esplorazione della struttura chiave-valore (ricordati di sostituire {table} con l’ID della tua tabella su BigQuery):

WITH Details AS (
  SELECT
    user_pseudo_id,
    CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) AS session_id,
    event_name,
    event_params
  FROM
    `{table}_*`
  WHERE
  event_name = 'page_view'
),

UnnestedDetails AS (
  SELECT
    pd.user_pseudo_id,
    pd.session_id,
    pd.event_name,
    ep.key AS param_key,
    ep.value.string_value AS string_value,
    ep.value.int_value AS int_value,
    ep.value.float_value AS float_value,
    ep.value.double_value AS double_value
  FROM
    Details pd
  CROSS JOIN
    UNNEST(pd.event_params) AS ep
)

SELECT
  *
FROM
  UnnestedDetails

L’esecuzione di questa query genera un report che consente di esplorare la coppia chiave-valore contenute nel campo:

Esempio la prima riga indica che, da uno specifico utente (user_pseudo_id) in una specifica sessione (session_id) si è verificato un evento “page_view” dal mezzo (param_key) ads (string_value).

Niente di più semplice. Buon UNNEST!

Lascia un commento

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

error: Questo contenuto è protetto!