
Google Cloud ha rilasciato l'accessor .bigquery in BigQuery DataFrames (BigFrames), una libreria che permette di richiamare le funzioni AI enterprise di BigQuery — previsioni su serie storiche, classificazione, generazione di embedding — direttamente dentro un DataFrame pandas. Chi scrive codice Python può quindi far girare pipeline di data science sull'infrastruttura cloud di BigQuery senza cambiare sintassi né strumento di lavoro.
In breve
- L'accessor
.bigquerysi aggiunge a oggetti pandas standard (Series e DataFrame) e dà accesso a funzioni AI che fino a oggi richiedevano query SQL dirette su BigQuery. - I calcoli non girano in locale: BigFrames traduce le operazioni pandas in Google Standard SQL e le esegue su modelli nativi di BigQuery, come TabFM per la regressione e TimesFM per il forecasting.
- Tra le funzioni disponibili ci sono
embed()esimilarity()sulle Series, eforecast(),classify(),predict(),if_()sui DataFrame. - La nuova versione TimesFM 3.0, in anteprima su BigQuery, risulta prima in classifica nei benchmark di forecasting GIFT-Eval, FEV-Bench e TIME.
- Per usare l'accessor serve un progetto Google Cloud con i ruoli BigQuery Job User e Agent Platform User.
Cos'è l'accessor .bigquery di BigQuery DataFrames?
L'accessor .bigquery è un'estensione di BigQuery DataFrames (BigFrames) che aggiunge metodi di intelligenza artificiale agli oggetti pandas già esistenti in un progetto Python. Invece di esportare i dati, scrivere una query SQL su BigQuery e reimportare il risultato, chi lavora con pandas può chiamare direttamente, ad esempio, dataframe.bigquery.ai.forecast(...) o serie.bigquery.ai.embed(...) e ottenere come risposta un oggetto pandas standard, pronto per essere filtrato, unito o passato ad altre librerie.
Questo colma una distanza pratica che esiste da tempo nel lavoro di data science: da una parte l'ambiente familiare di pandas, scikit-learn e Jupyter; dall'altra la potenza di calcolo e i modelli proprietari disponibili solo dentro BigQuery. Con l'accessor, le due cose convivono nello stesso script.
Come funziona dietro le quinte?
Dietro le quinte, BigFrames non esegue i calcoli sulla macchina locale: traduce ogni chiamata .ai.* in una query Google Standard SQL e la invia a BigQuery, dove viene eseguito il modello fondazionale corrispondente. Quando si chiama ai.predict(), ad esempio, non viene addestrato un modello scikit-learn in locale: la richiesta attiva un modello come TabFM direttamente sull'infrastruttura di BigQuery, e il risultato torna indietro come un normale DataFrame pandas.
Per capire la differenza pratica, si pensi al confronto tra i due approcci alla regressione:
- Approccio tradizionale: caricare i dati con pandas, separare feature e target, costruire una pipeline con
StandardScalereLinearRegression, addestrare il modello in locale, poi prevedere su nuovi dati. - Con l'accessor
.bigquery: una sola riga,train_df.bigquery.ai.predict(new_data_df, label_col='target_metric'), che esegue la regressione direttamente su BigQuery tramite il modello TabFM e restituisce le previsioni come Series pandas.
Il vantaggio non è solo di sintesi del codice: è che il calcolo gira su infrastruttura cloud dimensionata per volumi di dati più grandi di quelli gestibili comodamente in locale.
Quali funzioni AI sono disponibili sulle pandas Series?
Sulle Series, l'accessor .bigquery mette a disposizione funzioni pensate per lavorare su una singola colonna di dati. Le principali sono:
| Funzione | Cosa fa |
|---|---|
embed() |
Genera embedding vettoriali per una colonna di testo |
generate_embedding() |
Genera embedding a livello di tabella |
generate_table() |
Esegue compiti di linguaggio naturale producendo output strutturati |
generate_text() |
Esegue compiti di linguaggio naturale producendo testo libero |
similarity() |
Calcola la vicinanza semantica (cosine similarity) tra elementi |
Un esempio concreto: su una Series con i valori 'dog' e 'fish', la chiamata animals.bigquery.ai.similarity('shrimp', endpoint='text-embedding-005') restituisce un punteggio di similarità coseno per ciascun elemento rispetto alla parola target, utile per compiti di ricerca semantica o raggruppamento di contenuti simili.
Quali funzioni AI sono disponibili sui pandas DataFrame?
Sui DataFrame, le funzioni operano su strutture multi-colonna o su prompt che combinano più campi insieme. L'elenco comprende:
classify()— classificazione zero-shot, senza bisogno di addestrare un modello dedicato.forecast()— previsione su serie storiche raggruppate, basata sul modello TimesFM, inclusa la nuova versione TimesFM 3.0.generate()— genera risposte testuali valutando prompt dinamici su più colonne.generate_bool(),generate_double(),generate_int()— valutano una condizione in linguaggio naturale restituendo rispettivamente booleani, numeri decimali o numeri interi.if_()— filtra le righe di un DataFrame in base a una condizione descritta in linguaggio naturale.predict()— esegue modelli predittivi come la regressione, tramite TabFM.score()— assegna un punteggio agli input secondo criteri descritti dall'utente.
Il caso forecast() è tra i più immediati da capire: su un DataFrame con colonne di data, identificativo del prodotto e vendite, basta specificare la colonna target, la colonna temporale, la chiave di raggruppamento e l'orizzonte di previsione per ottenere un DataFrame con i valori previsti, il livello di confidenza e gli intervalli di previsione. La versione TimesFM 3.0, richiamabile passando model="TimesFM 3.0", è attualmente in anteprima su BigQuery e risulta prima nei benchmark GIFT-Eval, FEV-Bench e TIME per il forecasting.
Interessante anche il comportamento di if_(): di default lavora in modalità minimize_cost, cioè un modello locale distillato elabora la maggior parte delle righe e solo una parte viene inviata a Gemini, riducendo costi e tempi su dataset di grandi dimensioni. Impostando optimization_mode="maximize_quality" ogni riga viene invece inviata al modello linguistico completo.
Come si inizia a usare l'accessor .bigquery?
Per usare l'accessor serve un progetto Google Cloud con due ruoli assegnati: BigQuery Job User (roles/bigquery.jobUser), necessario per eseguire le query, e Agent Platform User (roles/aiplatform.user), necessario per accedere ai modelli fondazionali sulla piattaforma Gemini Enterprise Agent.
Dal punto di vista pratico, i passaggi sono pochi: installare pandas e bigframes nell'ambiente Jupyter o Python che si sta usando, importare bigframes.pandas e impostare l'ID del progetto Google Cloud con bpd.options.bigquery.project = "nome-progetto". Da quel momento, le funzioni AI sono richiamabili direttamente su oggetti pandas standard, senza ulteriori configurazioni.
Perché conviene a chi costruisce pipeline di data science?
Il vantaggio principale è la riduzione dell'attrito tra due mondi che finora richiedevano strumenti diversi: l'ambiente di sviluppo familiare basato su pandas e la potenza di calcolo cloud di BigQuery. Compiti che normalmente richiedono boilerplate — formattare timestamp, raggruppare entità, addestrare un modello custom — vengono ridotti a una singola chiamata di funzione, mantenendo come output oggetti pandas compatibili con il resto del flusso di lavoro: filtri, join, visualizzazioni.
Questo tipo di integrazione interessa in particolare chi gestisce pipeline dati con volumi crescenti, dove il collo di bottiglia non è la logica del modello ma la capacità di elaborazione in locale.
Domande frequenti
Serve riscrivere il codice esistente per usare l'accessor .bigquery?
No: l'accessor si aggiunge a oggetti pandas già esistenti. Basta importare bigframes.pandas e impostare il progetto Google Cloud; le chiamate .bigquery.ai.* si inseriscono nel codice pandas già scritto.
I calcoli vengono eseguiti in locale o nel cloud? Nel cloud: BigFrames traduce le operazioni pandas in query Google Standard SQL eseguite su BigQuery, e restituisce il risultato come oggetto pandas standard.
Cos'è TimesFM 3.0?
È la versione più recente del modello di forecasting usato dalla funzione forecast(), attualmente in anteprima su BigQuery, che risulta prima nei benchmark GIFT-Eval, FEV-Bench e TIME.
Cosa cambia tra minimize_cost e maximize_quality in ai.if_()?
In modalità minimize_cost (predefinita) un modello locale distillato elabora la maggior parte delle righe e solo alcune vengono inviate a Gemini, riducendo costi e tempi; in modalità maximize_quality ogni riga viene valutata dal modello linguistico completo.
Fonti
- BigQuery AI Functions in Pandas | Google Cloud Blog — Shenyang Cai, Senior Software Engineer (7 novembre 2026)
Se nella tua azienda gestisci dati sparsi tra sistemi diversi e ti chiedi come trasformarli in decisioni operative, è un tema che si può affrontare partendo da un confronto concreto sulla situazione specifica: puoi scrivere a iNexus per approfondire.