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

Amazon Redshift analytics.google_reviews
Google Business Profile 61,482 rows
profile_name Kestrel Market Bellwood
2

Two tills staffed at five on a Friday and half the self-checkouts down

profile_name Kestrel Market Severn Park
5

Marisol walked me to the thing I could not find. Twice.

profile_name Kestrel Express Ashgrove
4

Fine for a quick shop, the queue actually moves

profile_name Kestrel Market Bellwood
1

Self-checkout froze again and nobody came over

26 stores loading into one table COPY 09:34
  • chewy
  • qonto
  • brevo
  • jins
  • filmin
  • lugg

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.

Amazon Redshift Query editor
-- 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
Results 5 of 26 stores
site_key rating vs_peers
BELLWOOD 3.6 -0.9
ASHGROVE 4.1 -0.3
DUNMORE 4.3 -0.2
KIRKHAM 4.5 0.0
SEVERN PARK 4.6 +0.1

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.

Amazon Redshift analytics.google_reviews
profile_name VARCHAR(255) Join key

Column B in the synced sheet. The Google listing title.

review_id
VARCHAR(64)
review_date
TIMESTAMP
score
SMALLINT
review_text
VARCHAR(65535)
language
VARCHAR(8)
tags
VARCHAR(1024)
link
VARCHAR(512)
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.

Amazon Redshift Getting rows in No connector
A · No code runs as often as every minute
Google Sheets Sheet AppFlow Amazon Redshift Redshift

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.

B · One job you write you own this step
Google Sheets Sheet export S3 Amazon Redshift Redshift

One COPY with a JOB, and each new file that lands is picked up on its own.

Amazon Redshift Run once
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.

Amazon Redshift

analytics.google_reviews

ops.store_week

ON site_key
from analytics ops
site_key rating rota_gap
BELLWOOD 3.6 -14%
ASHGROVE 4.1 -4%
DUNMORE 4.3 -1%
KIRKHAM 4.5 +2%
SEVERN PARK 4.6 +1%

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.

Amazon Redshift Query editor
-- 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
Results 5 of 26 stores in 1.2s
site_key reviews mentions share
BELLWOOD 214 61 29%
KIRKHAM 178 14 8%
SEVERN PARK 152 9 6%
DUNMORE 131 7 5%
ASHGROVE 96 5 5%

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.