Recensioni Google in BigQuery
Ogni recensione Google come riga nel suo progetto, con la sede che l'ha generata. Il che significa che la domanda non è più quale sia la valutazione, ma quale sede si discosta da quelle che le somigliano.
Attivazione in meno di cinque minuti • Nessuna demo richiesta
La domanda è quale sede si discosta
Il profilo Google Business fornisce una valutazione per sede e un elenco di recensioni sotto di essa. Non le dirà mai che trentuno sedi si trovano tra 4,5 e 4,7 mentre una è a 3,4, perché non ha modo di mettere questi numeri a confronto tra loro. Nel data warehouse questo è un GROUP BY e un ORDER BY, e sta su un solo schermo.
Google archivia ogni recensione sotto una sede, e Reviewflowz assegna a ogni sede il proprio profilo, così il nome della sede viene scritto su ogni riga invece di essere dedotto dal testo. Un problema circoscritto a una sede assume così una forma interrogabile.
Quella forma è la diagnosi. Un aumento di prezzo si legge come l'intera rete che si sposta insieme. Un buco nei turni, un lettore di carte che ha smesso di funzionare, un manager andato via a marzo, si legge invece come una singola sede che scende mentre le vicine restano stabili. Sapere quale sede le dice chi chiamare, e basta una query invece di un'intuizione.
Il passo successivo è una clausola WHERE, perché il testo completo della recensione è una colonna ordinaria. Conti le recensioni che menzionano il parcheggio da marzo, suddivise per sede, e avrà individuato il problema di rete prima che qualcuno lo sollevi in una riunione regionale.
-- which sites are behind their own region
SELECT r.location,
ROUND(AVG(r.score), 1) AS rating,
COUNT(*) AS reviews
FROM `halcyon-analytics.reviews.google_reviews` r
JOIN `halcyon-analytics.ops.sites` s USING (location)
WHERE r.review_date >= '2026-03-01'
GROUP BY r.location
ORDER BY rating Una tabella, non un report
Ciò che arriva è una tabella, non una dashboard progettata da qualcun altro. Una riga per recensione Google: la sede, l'id della recensione, il timestamp, il punteggio, il testo completo, la lingua rilevata, i tag e un link di rimando alla recensione su Maps. Colonne semplici, niente da decodificare, niente da chiederci di aggiungere.
La sede è presente su ogni riga perché Google fornisce un profilo per sede e Reviewflowz mantiene questa corrispondenza. Arriva come il nome che Google conserva, non come un id, così è lei a nominare quella colonna quando dichiara la tabella.
Il testo della recensione è una colonna STRING come le altre, così il termine che le interessa diventa una clausola WHERE invece di un pomeriggio di lettura. Reviewflowz rileva la lingua direttamente dal testo, ed è per questo che una recensione in francese lasciata su una scheda di Bruxelles si raggruppa comunque come ci si aspetterebbe.
Una colonna che non troverà, ed è meglio dirlo apertamente: questa tabella contiene la recensione, non la risposta. La copertura delle risposte per sede è una domanda legittima, e una pagina che lasciasse intendere il contrario le costerebbe una mattinata persa.
One row per review, tagged to the site
| review_id | STRING | Stable, so updates land in place |
| review_date | TIMESTAMP | When the review was posted |
| score | FLOAT64 | 1.0 to 5.0 |
| review_text | STRING | The full text, queryable |
| language | STRING | Detected from the text |
| tags | STRING | Themes, filled as reviews arrive |
| review_url | STRING | Back to the review on Google Maps |
Google gives one profile per location, so the site name is on every row.
Come le righe arrivano davvero in BigQuery
Non esiste una destinazione BigQuery gestita da un semplice clic, e questa pagina non farà finta che esista. Ciò che Reviewflowz offre è un Google Sheet nel suo Drive che mantiene aggiornato: una nuova recensione Google diventa una nuova riga entro mezz'ora, una recensione modificata aggiorna la propria riga, e una recensione rimossa da Google perde la propria riga.
BigQuery legge un Google Sheet su Drive come tabella esterna. Un solo CREATE EXTERNAL TABLE puntato sull'URL del foglio e google_reviews esiste nel suo dataset, si interroga come qualsiasi altra tabella, ed è sempre corretta al momento della query perché legge il foglio stesso, non una sua copia. Niente da pianificare, niente da mantenere attivo.
Se preferisce una tabella nativa partizionata, la Review API è l'altra strada. La interroghi periodicamente o usi il webhook, poi la carichi con lo stesso job che già usa per ogni altra fonte. È un lavoro che un data team scrive una volta sola.
In entrambi i casi lo storico arriva incluso. Su un piano a pagamento, un clic carica tutte le recensioni Google passate di ogni sede, così la linea di tendenza parte già completa invece di riempirsi nel trimestre successivo.
reviews Sheet in
your Drive External table
in BigQuery
CREATE EXTERNAL TABLE
`halcyon-analytics.reviews.google_reviews`
OPTIONS (
format = 'GOOGLE_SHEETS',
uris = ['https://docs.google.com/spreadsheets/d/1a9F...'],
skip_leading_rows = 1
) Reads the sheet at query time, so there is nothing to schedule and nothing to keep alive.
La unisca a ciò che già tiene per sede
La sede è una chiave di join che possiede già. Ogni azienda con più di una sede tiene una tabella con una riga per sede: ricavi, ore di personale, traffico, orari di apertura, la data dell'ultimo restyling. Le recensioni Google arrivano etichettate allo stesso modo, così unire le due cose è un JOIN, non un progetto.
È lì che vivono i numeri interessanti. La valutazione accanto ai ricavi per visita mostra quanto costa davvero un trimestre negativo in una filiale. La valutazione accanto alle ore di turno mostra se la sede di cui tutti si lamentano è quella che nessuno ha coperto con il personale.
Sistema anche il confronto. Un 3,4 ha senso solo accanto a sedi simili, quindi unisca i suoi stessi segmenti, centro città contro parco commerciale, e confronti una sede con i suoi pari invece che con la media di rete.
Questo è l'intero motivo per mettere le recensioni Google in un data warehouse invece di leggerle in uno strumento dedicato. Uno strumento per le recensioni può parlarle solo di recensioni. Il data warehouse è dove una recensione si trova accanto al personale, agli incassi e al restyling che la spiegano, e dove la spiegazione è una colonna, non una teoria.
Cosa nasconde una media mensile
Il volume delle recensioni Google segue il traffico in negozio, non un calendario di uscite. Sale il venerdì, raddoppia il sabato e resta alto la domenica, poi risale per due settimane dopo una campagna locale. Una media mensile sta sopra cinque di quei giorni e ben sotto gli altri due, quindi non descrive nessuno di essi.
Questo è un problema di modellazione, non di reporting, ed è esattamente a cosa serve un data warehouse. Confronti giorno con lo stesso giorno della settimana, applichi una finestra di sette giorni alla tendenza, e un sabato negativo smette di nascondersi dentro un numero mensile.
Sceglie lei cosa far confluire in uscita. Selezioni le sedi, e aggiunga un filtro sul punteggio se lo desidera, così il team di rete riceve ogni sede e il responsabile del supporto riceve una tabella che contiene solo da una a tre stelle.
E la tabella vive nel suo progetto Google Cloud, nella regione che ha scelto, sotto lo stesso IAM che già gestisce e la stessa politica di conservazione che ha già scritto. Concedere l'accesso a un data scientist richiede gli stessi pochi clic di qualsiasi altro dataset lì dentro, e revocarlo di nuovo richiede altrettanti pochi clic.
A monthly average sits above five days and under two, which is why the warehouse models this and a report does not.
Una valutazione da sola non spiega nulla. La sede accanto ad essa sì.
Attivazione in meno di cinque minuti. Nessuna demo richiesta.
Esiste un connettore nativo per BigQuery?
No, e sarebbe scorretto lasciarlo intendere. Reviewflowz sincronizza un Google Sheet nel suo Drive, e BigQuery legge quel foglio come tabella esterna con una singola istruzione CREATE EXTERNAL TABLE. Se preferisce una tabella nativa partizionata, la Review API insieme a un job di caricamento pianificato la porta lì. Entrambe le soluzioni sono lavoro ordinario per un data team, e nessuna delle due richiede una demo.
La sede arriva davvero su ogni riga?
Sì. Google fornisce un profilo per sede, e Reviewflowz mantiene questa corrispondenza uno a uno, così ogni riga di recensione porta la sede a cui appartiene. Arriva come il nome della sede che Google conserva, non come un suo id, così dichiara quella colonna come sede quando crea la tabella esterna e mappa i nomi alle sue chiavi di sede una sola volta. Da lì in poi è una normale chiave di join.
Quanto è aggiornata la tabella?
Il foglio si risincronizza ogni 30 minuti, e una tabella esterna legge il foglio al momento della query, così una query che esegue ora vede ciò che l'ultima sincronizzazione ha scritto. Un job di caricamento in una tabella nativa è aggiornato quanto la pianificazione che gli assegna.
Quali colonne ha la tabella?
Il foglio sincronizzato ha un'intestazione fissa di 28 colonne, una riga per recensione: l'id della recensione, la sede, la piattaforma, la data della recensione, il punteggio, il titolo, il testo completo, la lingua rilevata, il nome di chi ha scritto la recensione, i tag, un link di rimando alla recensione, e il resto. Non c'è una colonna per le risposte e non ci sono schede per piattaforma, così tutto sta in un'unica tabella piatta su cui può applicare uno schema.
Il primo caricamento include lo storico delle recensioni Google?
Sì, su un piano a pagamento: un clic carica tutte le recensioni Google passate su tutte le sue sedi, così la linea di tendenza è completa fin dal primo giorno invece che dopo tre mesi. Durante la prova gratuita le nuove recensioni arrivano man mano che vengono pubblicate, e lo storico si carica una volta sottoscritto un abbonamento.
Cosa succede quando chi ha scritto una recensione la modifica o la elimina?
La riga si aggiorna sul posto con il nuovo punteggio e il nuovo testo, così una query su di essa si allinea alla correzione. Quando una recensione viene rimossa dalla sua scheda Google, la sua riga scompare alla sincronizzazione successiva, il che significa che la tabella non conserva mai una versione della realtà che Google ha già smesso di mostrare.
Serve una demo per iniziare?
No. Colleghi da sé il suo profilo Google Business e il Google Sheet in meno di cinque minuti, poi esegua un CREATE EXTERNAL TABLE su di esso. Prova gratuita di 14 giorni, senza carta di credito.





