Recensioni Google verso Redshift
Redshift contiene già gli incassi, i turni e gli ingressi. L'unica cosa che non contiene è cosa ha detto il cliente, ed è la colonna che spiega le altre tre.
Sincronizzazione delle recensioni in meno di cinque minuti • Nessuna demo richiesta
Two tills staffed at five on a Friday and half the self-checkouts down
Marisol walked me to the thing I could not find. Twice.
Fine for a quick shop, the queue actually moves
Self-checkout froze again and nobody came over
La domanda è quale punto vendita sia indietro rispetto ai suoi pari
Google Business Profile fornisce una valutazione per scheda e le recensioni che la accompagnano. Non le dirà mai che otto dei punti vendita urbani si attestano entro un decimo da 4,5 mentre il nono è a 3,6, perché non può mettere questi nove numeri a confronto. In Redshift questo è una CTE e una window function.
Il confronto che conta è con il proprio gruppo di pari, non con la catena. Un 3,6 dice poco accanto a una media di rete che mescola un punto vendita di centro città con un minimarket di stazione di servizio. Dice molto accanto ai sette punti vendita dello stesso formato.
La forma della risposta è la diagnosi. Un cambio di prezzo si legge come uno scivolamento di tutti i punti vendita insieme. Un buco nei turni, un lettore di carte che ha smesso di funzionare, un responsabile che se n'è andato a marzo, si legge come un punto vendita che cala mentre i vicini tengono.
Il passo successivo è una clausola WHERE, perché il testo della recensione è una colonna come le altre. Conti le recensioni che menzionano le casse automatiche da marzo, suddivise per punto vendita, e ha la risposta prima della riunione regionale.
-- every store against its own format, not the chain average
WITH by_store AS (
SELECT s.site_key, s.format, AVG(r.score) AS rating
FROM analytics.google_reviews r
JOIN ops.stores s USING (profile_name)
WHERE r.review_date >= '2026-03-01'
GROUP BY 1, 2
)
SELECT site_key, format, ROUND(rating, 1) AS rating,
ROUND(rating - AVG(rating)
OVER (PARTITION BY format), 1) AS vs_peers
FROM by_store ORDER BY vs_peers Il punto vendita arriva come titolo della scheda, e lo mappa una sola volta
Reviewflowz crea un profilo recensioni per ogni scheda Google, quindi il punto vendita che ha ricevuto una recensione viene scritto su ogni riga invece di essere dedotto dal testo. Arriva nel foglio sincronizzato come colonna B, intestata Profile Name, ed è il titolo della scheda così come lo tiene Google. Un titolo, non un indirizzo.
Quindi lo mappa una sola volta. Lo dichiari come VARCHAR, aggiunga una colonna profile_name alla propria tabella dei punti vendita accanto ad esso, e da quel momento è una normale chiave di join con una normale DISTKEY.
Questo unico passaggio batte una colonna di localizzazione che avremmo compilato noi, perché la mappatura è sua. Due schede che Google tiene separate possono puntare a un'unica chiave di sito. Un punto vendita rinominato ad aprile mantiene la stessa chiave su entrambi i lati della ridenominazione.
Gli indirizzi esistono nel prodotto, e sarebbe sbagliato lasciar intendere il contrario. Il feed OData contiene un entity set Locations con la via, la città, il codice postale e la latitudine e longitudine. Non sono nel foglio, quindi arrivano a Redshift nello stesso modo della propria tabella dei punti vendita.
Column B in the synced sheet. The Google listing title.
DISTSTYLE KEY DISTKEY (profile_name) SORTKEY (review_date)
No reply column. The synced sheet does not carry one, so nothing downstream of it can.
Come le righe arrivano davvero a Redshift
Non esiste una destinazione Redshift da selezionare dentro Reviewflowz, e questa pagina non ne inventerà una. Ciò che ottiene, su ogni piano, è un Google Sheet nel proprio Drive che Reviewflowz mantiene aggiornato, ai minuti :02 e :32 di ogni ora.
Redshift non legge mai quel foglio dove si trova. BigQuery sì, ed è per questo che la versione di questa pagina per BigQuery è una singola CREATE EXTERNAL TABLE, mentre questa no. Ogni strada verso Redshift passa per S3, e la più breve è Amazon AppFlow, che prende Google Sheets come origine e Redshift come destinazione.
AppFlow inserisce, non fa upsert, e il foglio si corregge da solo quando chi ha scritto la recensione la modifica. Quindi ricarichi la tabella invece di accodare i dati, oppure scriva l'export da sé e lo affidi a un COPY JOB con AUTO ON. In entrambi i casi il bucket è suo e si tratta di un pomeriggio di lavoro, non di un trimestre.
Una cosa fa funzionare la strada senza codice. AppFlow lega un flusso Sheets alle intestazioni di colonna che trova e si rompe quando queste si spostano. L'intestazione dell'export di Reviewflowz non si sposta: 28 colonne, stesso ordine a ogni sincronizzazione, per progetto.
AppFlow reads the sheet and writes Redshift, staging through an S3 bucket you own. It inserts, it does not upsert, so you reload rather than append.
One COPY with a JOB, and each new file that lands is picked up on its own.
COPY analytics.google_reviews
FROM 's3://kestrel-lake/reviews/'
IAM_ROLE 'arn:aws:iam::4471...:role/redshift-copy'
FORMAT CSV IGNOREHEADER 1
JOB CREATE load_google_reviews AUTO ON; BigQuery queries a Drive-backed sheet in place. Redshift never does, so every road above runs through a bucket you own.
Colleghi tutto a ciò che già tiene per punto vendita
Ogni operatore con più di un punto vendita tiene una tabella con una riga per punto vendita e per settimana: incassi, ore di turno rispetto al piano, ingressi, la data dell'ultimo restyling. Le recensioni Google arrivano etichettate allo stesso modo, quindi unire le due cose è una JOIN, non un progetto.
È qui che i numeri smettono di essere interessanti e diventano utili. Una valutazione accanto alle vendite per visita mostra quanto costa davvero un trimestre negativo in un punto vendita. La stessa valutazione accanto alle ore di turno mostra se il punto vendita di cui tutti si lamentano è quello che nessuno ha coperto con il personale.
Risolve anche il confronto una volta per tutte. Colleghi ai propri segmenti, centro città contro retail park, ristrutturato contro in attesa, e ogni punto vendita viene misurato rispetto ai punti vendita a cui somiglia davvero, invece che rispetto a una media che non descrive nessuno di essi.
Questo è l'intero motivo per spostare le recensioni Google in un data warehouse invece di leggerle in uno strumento dedicato. Uno strumento per recensioni può dirle solo delle recensioni. Non può vedere gli incassi e non le verranno mai dati. Redshift li ha già, ed è per questo che è la recensione a doversi spostare.
analytics.google_reviews
ops.store_week
site_key is yours. It reaches the reviews table through one mapping from the Google listing title, written once.
Sei mesi di testo delle recensioni, un'unica istruzione
Il testo completo della recensione è una colonna VARCHAR come le altre, quindi il termine che le interessa diventa un ILIKE e un GROUP BY invece di un pomeriggio di lettura. Sei mesi di recensioni Google contate per punto vendita, per la parola che continua a ricorrere, sono un'unica istruzione.
Reviewflowz rileva la lingua di ogni recensione dal testo stesso e la scrive in una colonna dedicata, motivo per cui una recensione in spagnolo lasciata su una scheda del Texas finisce comunque nella stessa tabella e compare comunque nella stessa ricerca una volta ampliato il termine.
I tag arrivano già compilati, quindi i temi sono presenti prima ancora di scrivere un classificatore. Li tratti come punto di partenza: il numero su cui agisce un responsabile regionale è di solito il conteggio delle recensioni che corrispondono a una parola scelta da lei, nel proprio vocabolario.
Un avvertimento sulla colonna della data, perché cambia ciò che si modella. Il volume delle recensioni Google segue gli ingressi in negozio, non un calendario di uscite. Sale il venerdì, raddoppia il sabato, e cresce per due settimane dopo una campagna locale. Una media mensile sta sopra cinque di quei giorni e sotto gli altri due, quindi confronti dati omogenei per giorno della settimana.
-- six months of review text, one statement
SELECT s.site_key,
COUNT(*) AS reviews,
SUM(CASE WHEN r.review_text ILIKE '%self-checkout%'
THEN 1 ELSE 0 END) AS mentions
FROM analytics.google_reviews r
JOIN ops.stores s USING (profile_name)
WHERE r.review_date >= DATEADD(month, -6, CURRENT_DATE)
GROUP BY 1
ORDER BY mentions DESC Redshift sa tutto del punto vendita tranne cosa ha detto il cliente
Attivazione in meno di cinque minuti. Nessuna demo richiesta.
Esiste un connettore nativo per Redshift?
Non da parte di Reviewflowz, e sarebbe scorretto lasciarlo intendere. Ciò che Reviewflowz fornisce è un Google Sheet sincronizzato nel proprio Drive su ogni piano, più la Review API e i webhook su Premium. La parte restante la fornisce AWS. Amazon AppFlow prende Google Sheets come origine e Redshift come destinazione, passando per un bucket S3 di sua proprietà, il che è configurazione e non codice. Se preferisce gestire la pipeline in autonomia, esporti le righe su S3 e le carichi con un COPY JOB. Entrambe le strade richiedono più lavoro della versione di questa pagina per BigQuery, dove BigQuery interroga il foglio direttamente. Nessuna delle due richiede più di un pomeriggio.
Il punto vendita compare davvero su ogni riga?
Sì. Reviewflowz crea un profilo recensioni per ogni scheda Google, quindi ogni riga di recensione porta con sé la scheda a cui appartiene. Arriva come colonna B del foglio sincronizzato, intestata Profile Name, ed è il titolo della scheda così come lo tiene Google, non un id proprio. Mappi questi titoli sulle proprie chiavi di sito una sola volta, quando crea la tabella, e da quel momento è una normale chiave di join.
Quanto è aggiornata la tabella?
Il foglio si risincronizza ai minuti :02 e :32 di ogni ora, quindi tutto ciò che segue può essere pianificato su questi due orari. AppFlow può eseguire un flusso pianificato anche ogni minuto. Un COPY JOB con AUTO ON carica ogni nuovo file non appena arriva invece che a orario fisso, e un COPY eseguito alle 3 del mattino rende la tabella aggiornata alle 3 del mattino.
Quali colonne arrivano?
Il foglio sincronizzato ha un'intestazione fissa di 28 colonne e una riga per recensione: l'id della recensione, il profile name, la piattaforma, il titolo, il testo completo, il punteggio, un link di ritorno, la data della recensione, la lingua rilevata, il nome di chi ha scritto la recensione, i tag e il resto. Non c'è una colonna per le risposte e non ci sono schede separate per piattaforma, quindi il tutto si mappa su un'unica tabella Redshift piatta, senza nulla da ristrutturare.
Possiamo scegliere cosa esportare?
Sì. Scelga quali profili recensioni copre il foglio, e aggiunga un filtro per punteggio se lo desidera, così il team di rete riceve ogni punto vendita mentre una vista per il supporto riceve solo da una a tre stelle.
Il primo caricamento include lo storico delle nostre recensioni Google?
Sì, su un piano a pagamento. Un clic popola il foglio con tutte le recensioni Google passate su tutte le schede, così la linea di tendenza parte già completa invece di riempirsi nel trimestre successivo. Durante la prova gratuita le nuove recensioni arrivano man mano che vengono pubblicate, e lo storico si carica una volta sottoscritto l'abbonamento.
Cosa succede quando chi ha scritto una recensione la modifica o la elimina?
La riga si aggiorna sul posto, con chiave sull'id della recensione in colonna A, e quando una recensione viene rimossa dalla scheda Google la sua riga sparisce alla sincronizzazione successiva. Questo ha una conseguenza da tenere presente in fase di progettazione. AppFlow inserisce invece di fare upsert, e un COPY solo in append mantiene la vecchia versione accanto a quella corretta. Ricarichi la tabella, oppure faccia upsert su review_id, e Redshift si allinea alla correzione invece di conservare una versione della verità che Google non tiene più.
Funziona con Redshift Serverless?
Sì. Auto-copy è disponibile in versione stabile sia sui workgroup Redshift Serverless sia sui cluster provisioned RA3, e AppFlow scrive su entrambi. Nulla in questa pagina dipende da quale dei due utilizza.
Serve una demo per iniziare?
No. Colleghi da solo il proprio Google Business Profile e il Google Sheet in meno di cinque minuti. Prova gratuita di 14 giorni, senza carta di credito. La parte AWS tocca a lei collegarla, e ha la stessa forma di ogni altro caricamento che già gestisce.





