Avaliações do Google no Redshift
O Redshift já guarda o faturamento, a escala e o movimento de clientes. A única coisa que ele não guarda é o que o cliente disse, e essa é a coluna que explica as outras três.
Avaliações sincronizando em menos de cinco minutos • Sem necessidade de demo
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
A pergunta é qual loja está atrás das suas próprias pares
O Perfil da Empresa no Google te dá uma nota por ficha e as avaliações embaixo dela. Ele nunca vai te contar que oito das suas lojas urbanas ficam a um décimo de 4,5 enquanto a nona fica em 3,6, porque não consegue colocar esses nove números lado a lado. No Redshift isso é uma CTE e uma window function.
A comparação que importa é contra um grupo de pares, não contra a rede. Um 3,6 significa pouco ao lado de uma média da rede que mistura uma loja de rua principal com um posto expresso. Significa muito ao lado das sete lojas do mesmo formato.
O formato da resposta é o diagnóstico. Uma mudança de preço aparece como toda loja se movendo junto. Uma falha na escala, uma máquina de cartão que parou de funcionar, um gerente que saiu em março, aparece como uma loja caindo enquanto as vizinhas se mantêm.
O acompanhamento é uma cláusula WHERE, porque o texto da avaliação é uma coluna comum. Conte as avaliações que mencionam os caixas de autoatendimento desde março, divididas por loja, e você tem a resposta antes da reunião regional.
-- 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 A loja chega como um título de ficha, e você a mapeia uma vez
O Reviewflowz cria um perfil de avaliação por ficha do Google, então a loja responsável por uma avaliação é escrita em cada linha em vez de deduzida do texto. Ela chega à planilha sincronizada como a coluna B, com o título Profile Name, e é o título da ficha do jeito que o Google o guarda. Um título, não um endereço.
Então você a mapeia uma vez. Declare-a como VARCHAR, coloque uma coluna profile_name na sua própria tabela de lojas ao lado dela, e a partir daí é uma chave de junção comum com um DISTKEY comum nela.
Essa etapa única supera uma coluna de unidade que preenchêssemos por você, porque o mapeamento é seu. Duas fichas que o Google mantém separadas podem apontar para uma única chave de loja. Uma loja renomeada em abril mantém a mesma chave dos dois lados da renomeação.
Endereços existem no produto, e seria errado sugerir o contrário. O feed OData traz um conjunto de entidades Locations com a rua, a cidade, o código postal e a latitude e a longitude. Eles não estão na planilha, então chegam ao Redshift do mesmo jeito que a sua própria tabela de lojas chega.
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.
Como as linhas realmente chegam ao Redshift
Não existe um destino Redshift dentro do Reviewflowz para clicar, e esta página não vai inventar um. O que você tem, em todo plano, é uma planilha do Google Sheets no seu próprio Drive que o Reviewflowz mantém atualizada, aos minutos :02 e :32 de cada hora.
O Redshift nunca lê essa planilha onde ela está. O BigQuery lê, e é por isso que a versão desta página para o BigQuery é um único CREATE EXTERNAL TABLE e esta não é. Todo caminho para o Redshift passa por S3, e o mais curto é o Amazon AppFlow, que aceita o Google Sheets como origem e o Redshift como destino.
O AppFlow insere, não faz upsert, e a planilha se corrige sozinha quando quem avaliou edita. Então recarregue a tabela em vez de acrescentar a ela, ou escreva a exportação você mesmo e entregue a um COPY JOB com AUTO ON. De qualquer forma o bucket é seu e isso é uma tarde, não um trimestre.
Uma coisa faz o caminho sem código funcionar em silêncio. O AppFlow liga um fluxo do Sheets aos cabeçalhos de coluna que encontra e quebra quando eles se movem. O cabeçalho de exportação do Reviewflowz não se move: 28 colunas, na mesma ordem em toda sincronização, de propósito.
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.
Junte com o que você já guarda por loja
Todo operador com mais de uma unidade mantém uma tabela com uma linha por loja e por semana: faturamento, horas de escala contra o planejado, movimento de clientes, a data da última reforma. As avaliações do Google chegam marcadas do mesmo jeito, então juntar as duas é um JOIN em vez de um projeto.
É aí que os números deixam de ser interessantes e passam a ser úteis. Uma nota ao lado das vendas por visita mostra quanto um trimestre ruim numa loja realmente custa. A mesma nota ao lado das horas de escala mostra se a loja de que todo mundo reclama é a loja que ninguém escalou direito.
Isso também corrige a comparação de vez. Junte com os seus próprios segmentos, rua principal contra shopping de bairro, reformada contra em espera, e toda loja é medida contra as lojas que ela realmente se parece, em vez de contra uma média que não descreve nenhuma delas.
Esse é o motivo inteiro para mover as avaliações do Google para um warehouse em vez de lê-las numa ferramenta. Uma ferramenta de avaliações só consegue te contar sobre avaliações. Ela não consegue ver o faturamento e nunca vai receber esse acesso. O Redshift já o tem, e é por isso que a avaliação é o que deveria se mover.
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.
Seis meses de texto de avaliações, uma única instrução
O texto completo da avaliação é uma coluna VARCHAR como qualquer outra, então o termo que importa para você é um ILIKE e um GROUP BY em vez de uma tarde inteira lendo. Seis meses de avaliações do Google contadas por loja, para a palavra que continua aparecendo, é uma única instrução.
O Reviewflowz detecta o idioma de cada avaliação a partir do próprio texto e o escreve como a sua própria coluna, e é por isso que uma avaliação em espanhol deixada numa ficha do Texas ainda cai na mesma tabela e ainda aparece na mesma busca assim que você amplia o termo.
As tags chegam já preenchidas, então os temas já estão lá antes de você escrever um classificador. Trate-as como um ponto de partida: o número sobre o qual um gerente regional age costuma ser a contagem de avaliações que correspondem à sua própria palavra, no seu próprio vocabulário.
Um alerta sobre a coluna de data, porque isso muda o que você modela. O volume de avaliações do Google acompanha o movimento de clientes, não um calendário de lançamentos. Ele sobe na sexta-feira, dobra no sábado, e dispara por uma quinzena depois de uma campanha local. Uma média mensal fica acima de cinco desses dias e abaixo dos outros dois, então compare o mesmo com o mesmo por dia da semana.
-- 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 O Redshift sabe tudo sobre a loja, exceto o que o cliente disse
Configure em menos de cinco minutos. Sem necessidade de demo.
Existe um conector nativo para o Redshift?
Não do Reviewflowz, e seria desonesto sugerir que existe. O que o Reviewflowz te dá é uma planilha do Google Sheets sincronizada no seu próprio Drive em todo plano, além da Review API e webhooks no Premium. A AWS fornece a outra metade. O Amazon AppFlow aceita o Google Sheets como origem e o Redshift como destino, passando por um bucket S3 que é seu, o que é configuração, não código. Se você preferir ser dono do pipeline, exporte as linhas para o S3 você mesmo e as carregue com um COPY JOB. As duas opções são mais trabalho do que a versão desta página para o BigQuery, onde o BigQuery consulta a planilha no lugar. Nenhuma das duas passa de uma tarde.
A loja realmente aparece em cada linha?
Sim. O Reviewflowz cria um perfil de avaliação por ficha do Google, então toda linha de avaliação traz a ficha a que pertence. Ela chega como a coluna B da planilha sincronizada, com o título Profile Name, e é o título da ficha do jeito que o Google o guarda, não um id seu. Mapeie esses títulos para as suas próprias chaves de loja uma vez ao criar a tabela, e depois disso é uma chave de junção comum.
Quão atualizada é a tabela?
A planilha se sincroniza de novo aos minutos :02 e :32 de cada hora, então tudo depois dela pode ser agendado contra essas duas marcas. O AppFlow roda um fluxo agendado com a frequência de até uma vez por minuto. Um COPY JOB com AUTO ON carrega cada arquivo novo assim que chega em vez de num horário fixo, e um COPY que você roda às 3h deixa a tabela tão atualizada quanto as 3h.
Quais colunas chegam?
A planilha sincronizada tem um cabeçalho fixo de 28 colunas e uma linha por avaliação: o id da avaliação, o nome do perfil, a plataforma, o título, o texto completo, a nota, um link de volta, a data da avaliação, o idioma detectado, o nome de quem avaliou, as tags, e o resto. Não há coluna de resposta e não há abas por plataforma, então ela se encaixa numa única tabela plana do Redshift sem nada para reformatar.
Podemos escolher o que sai?
Sim. Escolha quais perfis de avaliação a planilha cobre, e adicione um filtro de nota se quiser um, então o time da rede recebe toda loja enquanto uma visualização de suporte recebe só de uma a três estrelas e mais nada.
A primeira carga inclui o nosso histórico de avaliações do Google?
Sim, num plano pago. Um clique carrega a planilha com toda avaliação passada do Google em todas as suas fichas, então a linha de tendência começa cheia em vez de se preencher ao longo do próximo trimestre. Durante o teste grátis, as avaliações novas chegam à medida que são publicadas, e o histórico é carregado assim que você assina.
O que acontece quando quem avaliou edita ou apaga a avaliação?
A linha se atualiza no lugar, indexada pelo id da avaliação na coluna A, e quando uma avaliação sai da sua ficha do Google, a linha dela some na sincronização seguinte. Isso tem uma consequência que vale a pena projetar. O AppFlow insere em vez de fazer upsert, e um COPY somente de inserção mantém a versão antiga junto com a corrigida. Recarregue a tabela, ou faça upsert em review_id, e o Redshift se move junto com a correção em vez de guardar uma versão da verdade que o Google já não guarda mais.
Isso funciona com o Redshift Serverless?
Sim. O auto-copy está disponível de forma geral em workgroups do Redshift Serverless e em clusters provisionados RA3, e o AppFlow escreve para os dois. Nada nesta página depende de qual deles você usa.
Preciso de uma demo para começar?
Não. Conecte o seu Perfil da Empresa no Google e a planilha do Google Sheets sozinho em menos de cinco minutos. Teste grátis de 14 dias, sem cartão de crédito. A metade da AWS fica por sua conta configurar, e ela tem o mesmo formato de toda outra carga que você já roda.





