Reseñas de Google a Redshift

Redshift ya guarda la facturación, el turno y la afluencia. Lo único que no guarda es lo que dijo el cliente, y esa es la columna que explica las otras tres.

Reseñas sincronizándose en menos de cinco minutos • Sin necesidad de demo

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 pregunta es qué tienda va por detrás de sus semejantes

Google Business Profile le da una valoración por ficha y las reseñas debajo. Nunca le dirá que ocho de sus tiendas urbanas están a una décima de 4,5 mientras la novena está en 3,6, porque no puede poner esos nueve números uno junto a otro. En Redshift eso es una CTE y una función de ventana.

La comparación que importa es contra un grupo de semejantes, no contra toda la cadena. Un 3,6 significa poco junto a una media del conjunto que mezcla una tienda de calle comercial con un express de gasolinera. Significa mucho junto a las siete tiendas del mismo formato.

La forma de la respuesta es el diagnóstico. Un cambio de precios se lee como todas las tiendas moviéndose juntas. Un hueco en el turno, un datáfono que dejó de funcionar, un gerente que se fue en marzo, se lee como una tienda que cae mientras sus vecinas se mantienen.

El siguiente paso es una cláusula WHERE, porque el texto de la reseña es una columna normal. Cuente las reseñas que mencionan las cajas de autopago desde marzo, divididas por tienda, y lo tiene antes que la reunión regional.

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

La tienda llega como el título de la ficha, y usted la mapea una sola vez

Reviewflowz crea un perfil de reseñas por cada ficha de Google, así que la tienda que generó una reseña queda escrita en cada fila en lugar de deducirse del texto. Llega a la hoja sincronizada como la columna B, con el encabezado Profile Name, y es el título de la ficha tal como lo guarda Google. Un título, no una dirección postal.

Así que lo mapea una sola vez. Declárelo como VARCHAR, ponga una columna profile_name en su propia tabla de tiendas junto a ella, y a partir de ahí es una clave de combinación normal con su DISTKEY correspondiente.

Ese paso único es mejor que una columna de ubicación que le rellenáramos nosotros, porque el mapeo es suyo. Dos fichas que Google mantiene separadas pueden apuntar a una misma clave de tienda. Una tienda renombrada en abril conserva la misma clave a ambos lados del cambio de nombre.

Las direcciones sí existen en el producto, y sería incorrecto dar a entender lo contrario. El feed OData lleva un conjunto de entidades Locations con la calle, la ciudad, el código postal y la latitud y longitud. No están en la hoja, así que llegan a Redshift de la misma forma que su propia tabla de tiendas.

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.

Cómo llegan realmente las filas a Redshift

No hay un destino Redshift dentro de Reviewflowz al que darle clic, y esta página no se va a inventar uno. Lo que obtiene, en todos los planes, es una hoja de Google en su propio Drive que Reviewflowz mantiene al día, a las :02 y a las :32 de cada hora.

Redshift nunca lee esa hoja donde está. BigQuery sí, por eso la versión de esta página para BigQuery es un solo CREATE EXTERNAL TABLE y esta no lo es. Todo camino hacia Redshift pasa por S3, y el más corto es Amazon AppFlow, que toma Google Sheets como origen y Redshift como destino.

AppFlow inserta, no hace upsert, y la hoja se corrige sola cuando alguien edita su reseña. Así que recargue la tabla en vez de añadir a ella, o escriba usted mismo la exportación y entréguesela a un COPY JOB con AUTO ON. En cualquier caso el bucket es suyo y esto es una tarde, no un trimestre.

Hay un detalle silencioso que hace que el camino sin código funcione. AppFlow ata un flujo de Sheets a los encabezados de columna que encuentra y se rompe si se mueven. El encabezado de exportación de Reviewflowz no se mueve: 28 columnas, mismo orden en cada sincronización, por diseño.

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.

Combínela con lo que ya guarda por tienda

Todo operador con más de una sede mantiene una tabla con una fila por tienda y por semana: facturación, horas de turno frente al plan, afluencia, la fecha de la última reforma. Las reseñas de Google llegan etiquetadas de la misma forma, así que juntar ambas es un JOIN, no un proyecto.

Ahí es donde los números dejan de ser interesantes y empiezan a ser útiles. Una valoración junto a las ventas por visita muestra lo que cuesta de verdad un mal trimestre en una tienda. La misma valoración junto a las horas de turno muestra si la tienda de la que todos se quejan es la tienda que nadie cubrió de personal.

También arregla la comparación de forma definitiva. Combínela con sus propios segmentos, calle comercial frente a parque comercial, reformada frente a pendiente de reforma, y cada tienda se mide contra las tiendas a las que de verdad se parece, en vez de contra una media que no describe ninguna.

Esta es toda la razón para llevar las reseñas de Google a un almacén de datos en vez de leerlas en una herramienta. Una herramienta de reseñas solo puede hablarle de reseñas. No puede ver la facturación y nunca se le va a dar. Redshift ya la tiene, por eso la reseña es lo que debe moverse.

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.

Seis meses de texto de reseñas, una sola sentencia

El texto completo de la reseña es una columna VARCHAR como cualquier otra, así que el término que le interesa es un ILIKE y un GROUP BY en vez de una tarde de lectura. Seis meses de reseñas de Google contadas por tienda, para la palabra que se repite, es una sola sentencia.

Reviewflowz detecta el idioma de cada reseña a partir del propio texto y lo escribe en su propia columna, por eso una reseña en español dejada en una ficha de Texas llega igualmente a la misma tabla y aparece en la misma búsqueda en cuanto amplía el término.

Las etiquetas llegan ya rellenas, así que los temas están ahí antes de que escriba un clasificador. Trátelas como un punto de partida: el número sobre el que actúa un gerente regional suele ser el recuento de reseñas que coinciden con su propia palabra, en su propio vocabulario.

Un aviso sobre la columna de fecha, porque cambia lo que modela. El volumen de reseñas de Google sigue la afluencia, no un calendario de lanzamientos. Sube el viernes, se duplica el sábado, y repunta durante dos semanas después de una campaña local. Una media mensual queda por encima de cinco de esos días y por debajo de los otros dos, así que compare lo comparable por día de la semana.

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 lo sabe todo sobre la tienda, menos lo que dijo el cliente

Configúrelo en menos de cinco minutos. Sin necesidad de demo.

¿Hay un conector nativo de Redshift?

No desde Reviewflowz, y sería deshonesto dar a entender que sí. Lo que Reviewflowz le da es una hoja de Google sincronizada en su propio Drive en todos los planes, más la Review API y webhooks en Premium. AWS pone la otra mitad. Amazon AppFlow toma Google Sheets como origen y Redshift como destino, pasando por un bucket S3 que usted controla, lo cual es configuración y no código. Si prefiere ser dueño de la canalización, exporte usted mismo las filas a S3 y cárguelas con un COPY JOB. Ambas opciones dan más trabajo que la versión de esta página para BigQuery, donde BigQuery consulta la hoja donde está. Ninguna de las dos pasa de una tarde.

¿La tienda llega de verdad en cada fila?

Sí. Reviewflowz crea un perfil de reseñas por cada ficha de Google, así que cada fila de reseña lleva la ficha a la que pertenece. Llega como la columna B de la hoja sincronizada, con el encabezado Profile Name, y es el título de la ficha tal como lo guarda Google, no un id suyo. Mapee esos títulos a sus propias claves de tienda una sola vez al crear la tabla, y después de eso es una clave de combinación normal.

¿Cómo de actualizada está la tabla?

La hoja se resincroniza a las :02 y a las :32 de cada hora, así que todo lo que venga después se puede programar contra esas dos marcas. AppFlow puede ejecutar un flujo programado hasta una vez por minuto. Un COPY JOB con AUTO ON carga cada archivo nuevo en cuanto llega en vez de por temporizador, y un COPY que ejecute a las 3 de la madrugada deja la tabla tan actualizada como esas 3 de la madrugada.

¿Qué columnas llegan?

La hoja sincronizada tiene una cabecera fija de 28 columnas y una fila por reseña: el id de la reseña, el nombre del perfil, la plataforma, el título, el texto completo, la puntuación, un enlace de vuelta, la fecha de la reseña, el idioma detectado, el nombre de quien la dejó, las etiquetas, y el resto. No hay columna de respuesta ni pestañas por plataforma, así que se traslada a una sola tabla plana de Redshift sin nada que reestructurar.

¿Podemos elegir qué sale?

Sí. Elija qué perfiles de reseñas cubre la hoja, y añada un filtro de puntuación si quiere, así el equipo del conjunto recibe todas las tiendas mientras una vista de soporte recibe solo de una a tres estrellas.

¿La primera carga incluye nuestro historial de reseñas de Google?

Sí, en un plan de pago. Un solo clic siembra la hoja con todas las reseñas de Google pasadas de sus fichas, así que la línea de tendencia empieza completa en lugar de irse llenando durante el trimestre siguiente. Durante la prueba gratuita, las reseñas nuevas llegan a medida que se publican, y el historial se carga en cuanto se suscribe.

¿Qué pasa cuando alguien edita o elimina su reseña?

La fila se actualiza en su sitio, con clave en el id de reseña de la columna A, y cuando una reseña desaparece de su ficha de Google, su fila se va en la siguiente sincronización. Eso tiene una consecuencia que conviene diseñar de antemano. AppFlow inserta en vez de hacer upsert, y un COPY de solo inserción deja la versión antigua junto a la corregida. Recargue la tabla, o haga upsert por review_id, y Redshift se mueve con la corrección en lugar de guardar una versión de la realidad que Google ya no sostiene.

¿Esto funciona con Redshift Serverless?

Sí. Auto-copy está disponible con carácter general en los workgroups de Redshift Serverless y en los clústeres provisionados RA3, y AppFlow escribe en cualquiera de los dos. Nada de esta página depende de cuál use.

¿Necesito una demo para empezar?

No. Conecte usted mismo su Google Business Profile y la hoja de Google en menos de cinco minutos. Prueba gratuita de 14 días, sin tarjeta de crédito. La mitad de AWS la conecta usted, y tiene la misma forma que cualquier otra carga que ya ejecute.