BigQuery è il fiore all’occhiello dell’offerta Big Data di Google Cloud Platform. Le sue performance di Data Analytics al limite della magia sorprendono egualmente programmatori alle prime armi e Software Engineers navigati, come si evince da alcune “composte reazioni” dell’Engineering Team di Spotify dopo l’unveiling della loro migrazione su Cloud Platform:

(side note: dovete dare un’occhiata a Spotify Labs, il blog dello Spotify Engineering Team. La serie dei tre post sul passaggio a Google Cloud Platform è… illuminante!)

Nelle ultime settimane sono state rilasciate alcune novità che rendono BigQuery un Analytics Data Warehouse ancora più potente e interoperabile. Vale la pena quindi esplorarle nel dettaglio.

Standard SQL (beta)

L’attuale dialetto SQL di BigQuery è molto simile allo standard ANSI, e la maggior parte dei costrutti funziona esattamente come ci si aspetta. Ad oggi persistono alcune piccole differenze di cui occorre tenere conto se la vostra esperienza è radicata in altri strumenti SQL-compliant.

Il nuovo dialetto SQL (attualmente in beta) supera anche questa barriera, mettendo a disposizione un sistema totalmente compatibile con ANSI SQL 2011 (con le dovute estensioni atte a gestire, ad esempio, campi innestati o ripetuti). In più, questa evoluzione aggiunge alcune nuove succulente features, tra le quali:

  • un sistema di tipi più ricco e flessibile;
  • il supporto alle THETA JOIN (JOIN che accettano ineguaglianze come criterio di confronto);
  • la possibilità di inserire subqueries all’interno di ogni clausola della query (FROM, ma anche SELECT, WHERE, eccetera).

Tutto ciò, ovviamente, con gli stessi standard di performance a cui ci siamo abituati non cominceremo mai ad abituarci.

Time-based Table Partitioning

Con questa evolutiva, caricare ed interrogare dati su diverse scale temporali (giorni, mesi, anni) diventa ancora più semplice. L’attuale meccanismo dei Table Wildcards rappresenta già una soluzione economica e performante per questo problema, ma attraverso le Partitioned Tables questo meccanismo viene ulteriormente raffinato: gli sviluppatori devono solo caricare i dati, BigQuery si occupa di inserirli nella giusta partizione temporale.

L’interrogazione è semplice come specificare un intervallo temporale tra due timestamp: la seguente query, ad esempio, recupera i dati di una campagna di marketing relativi agli ultimi 3 mesi:

SELECT INTEGER(SUM(roi)) AS totalROI, DATE(click_date) AS day
FROM [marketingdata.marketing_campaign] WHERE campaignKey = “111745278453-278”
AND _PARTITIONEDTIME BETWEEN TIMESTAMP(“2016-03-01”) AND TIMESTAMP(“2016-06-01”)
GROUP BY day
ORDER BY day DESC

Le query che usano Partitioned Tables sono più performanti e più economiche, perché BigQuery non è costretto a scandire il contenuto dell’intera tabella, ma interroga solo le partizioni di interesse.

Integrazione con Google Drive

Questa non la dovete perdere.

I fogli di calcolo sono ormai lo strumento più diffuso per la raccolta, la condivisione e l’analisi di dati all’interno di ogni azienda, per via della loro flessibilità e facilità di utilizzo. Nell’ecosistema Google tale paradigma è rappresentato da Google Sheets, strumento della piattaforma Google Drive che al classico foglio di calcolo aggiunge la possibilità dell’editing collaborativo real-time e di un modello di condivisione Cloud-based.

Google ha recentemente rilasciato un meccanismo di integrazione tra Google Drive e Google BigQuery. Tale meccanismo consente di:

  • salvare i risultati di una query BigQuery direttamente su un Google Spreadsheet;
  • interrogare file CSV/JSON ospitati su Google Drive direttamente, senza doverli preventivamente importare in BigQuery;

ma soprattutto – rullo di tamburi:

Interrogare Google Sheets direttamente da Google BigQuery!

Se la cosa non ha ancora suscitato in voi un misto di eccitazione ed euforia, ecco a voi un paio di esempi che vi faranno cambiare idea:

  • Esempio A. L’azienda ACME commercializza i propri prodotti con una fitta rete di stores sul territorio nazionale, e colleziona i propri dati di vendita su BigQuery. Il reparto Marketing di ACME utilizza Google Sheets per individuare segmenti di prodotti o insiemi di store di particolare interesse. BigQuery integra automaticamente queste informazioni nel flusso di analisi dei dati di vendita di ACME, calcola statistiche aggregate per ogni criterio di breakdown, ed esporta il risultato su un altro Spreadsheet. Il Marketing riceve così le statistiche di interesse in un formato facilmente fruibile e in modo totalmente automatico.
  • Esempio B. Il sistemista dell’azienda ACME ha necessità di monitorare i log delle macchine all’interno del proprio cluster Compute Engine. Il suddetto sistemista è una persona in gamba, ed ha quindi abilitato l’esportazione automatica dei log su BigQuery attraverso Cloud Logging. Tuttavia, le sue necessità di monitoraggio cambiano piuttosto frequentemente, per via del frequente rilascio di nuovi servizi. Il sistemista tiene allora traccia di gruppi di istanze da monitorare congiuntamente su un Google Sheets. BigQuery combina queste informazioni con il flusso real-time dei log, abilitando la realizzazione di dashboard aggiornate in tempo reale ed automaticamente personalizzate sulla base delle esigenze.

Il team di Data Analyists di Halfbrick Studios ha avuto modo di dichiarare: “This feature allows us to learn from our data even faster and helps get data from analysts to our teams no matter where they are” – e a mio modo di vedere, non si può non dar credito alle parole di chi ha realizzato un gioco come Fruit Ninja.

Se volete avere dettagli in più su BigQuery e sugli altri strumenti della suite Big Data di Google Cloud Platform, richiedete la partecipazione al prossimo training gratuito “Google Cloud Platform: Big Data & Machine Learning Fundamentals”.

Affrettatevi, i posti sono limitati!