Avaliações da App Store no BigQuery

Toda avaliação da App Store como uma linha no seu próprio projeto, trazendo o país da loja e o idioma em que foi escrita. As duas perguntas que o App Store Connect não responde viram SQL comum.

Configure em menos de cinco minutos • Sem necessidade de demo

App Store BigQuery 128,412 rows

Destination table

fjord-analytics.reviews.app_store_reviews

review_date score country review_text
2026-09-07 5.0 Australia Lost signal above the treeline, map kept working.
2026-09-07 1.0 Japan 検索に日本語が入力できません
2026-09-06 4.0 Canada Route planning is quick. Water refills next?
2026-09-06 5.0 Germany Höhenlinien sind gut lesbar, auch bei Sonne.
Synced 12 minutes ago
  • chewy
  • qonto
  • brevo
  • jins
  • filmin
  • lugg

A pergunta que o App Store Connect não responde

O App Store Connect te dá uma nota e uma lista. Ele nunca vai te contar que sete lojas ficam entre 4,4 e 4,7 enquanto o Japão está em 1,6, porque não tem como colocar esses números lado a lado. No BigQuery isso é um GROUP BY numa coluna que você já tem, e são cinco linhas de SQL.

A Apple arquiva cada avaliação da App Store sob uma loja, e o Reviewflowz escreve essa loja em cada linha como o país. Então o país é dado real em vez de um palpite a partir do idioma, e um problema com formato de mercado tem um formato que você pode consultar.

Esse formato é o diagnóstico. Uma falha aparece como todo país caindo junto. Uma string traduzida que não cabe mais no botão, ou uma caixa de busca que parou de aceitar entrada em japonês, aparece como um país caindo enquanto o resto não se mexe. O país diz para qual time ligar.

O acompanhamento é uma cláusula WHERE, porque o texto completo da avaliação é uma coluna comum. Conte as avaliações que mencionam busca desde o dia primeiro do mês, divididas por país, e você tem o relatório de bug antes de alguém abrir um.

BigQuery Query editor
-- rating by storefront since 4.2 shipped
SELECT country,
       ROUND(AVG(score), 1) AS rating,
       COUNT(*) AS reviews
FROM `fjord-analytics.reviews.app_store_reviews`
WHERE review_date >= '2026-09-01'
GROUP BY country
ORDER BY rating
Results 5 rows in 0.4s
country rating reviews
Japan 1.6 214
Spain 4.4 96
United States 4.6 1,240
Germany 4.6 331
Australia 4.7 188

Uma tabela, não um relatório

O que chega é uma tabela, não um painel que outra pessoa desenhou. Uma linha por avaliação da App Store: o id da avaliação, o horário, a nota, o título, o texto completo, o país, o idioma, as tags e um link de volta para a avaliação. Colunas simples, nada para fazer engenharia reversa.

O texto da avaliação é uma coluna STRING como qualquer outra, então o termo que importa para você é uma cláusula WHERE em vez de uma tarde inteira lendo. O Reviewflowz detecta o idioma a partir do próprio texto, e é por isso que uma avaliação em alemão deixada na loja suíça ainda agrupa do jeito que você espera.

As tags chegam preenchidas. O Reviewflowz lê cada avaliação em qualquer idioma em que foi escrita e a arquiva sob os temas que os seus usuários levantam, então uma uma estrela em japonês sobre busca e uma em inglês sobre a mesma coisa trazem a mesma tag e contam como um único número.

Uma coluna que você não vai encontrar, e vale a pena dizer isso abertamente: a Apple não anexa a versão do app a uma avaliação, então nada depois disso na cadeia pode trazer uma. Quem vende qualidade de avaliação por build a partir de um feed da App Store está vendendo um campo que a Apple não publica.

BigQuery fjord-analytics.reviews.app_store_reviews Schema
review_id STRING One row per review, stable
review_date TIMESTAMP When it was posted
score FLOAT64 1.0 to 5.0
title STRING The review headline
review_text STRING The full text, queryable
country STRING Apple’s storefront territory
language STRING Detected from the text, ISO 639-1
tags ARRAY Themes, filled as reviews arrive
review_url STRING Back to the review on the store

Como as linhas realmente entram no BigQuery

Não existe um destino nativo no BigQuery para clicar, e esta página não vai fingir que existe. O que o Reviewflowz te dá é uma planilha do Google Sheets no seu próprio Drive que ele mantém atualizada: uma nova avaliação da App Store é uma nova linha em até meia hora, uma avaliação editada atualiza a própria linha, e uma avaliação que a Apple remove perde a sua linha.

O BigQuery lê uma planilha do Google Sheets vinculada ao Drive como uma tabela externa. Um único CREATE EXTERNAL TABLE contra a URL da planilha e app_store_reviews existe no seu conjunto de dados, é consultável como qualquer outra tabela, e está atualizada no momento da consulta porque lê a planilha, não uma cópia. Nada para agendar, nada para manter vivo.

Se você preferir uma tabela particionada nativa, a Review API é o outro caminho. Consulte-a periodicamente ou use o webhook, depois carregue com o job que você já roda para toda outra fonte. É um trabalho que o seu time de dados escreve uma vez, e chamar isso de job em vez de uma caixinha para marcar é o ponto.

De qualquer forma, o histórico vem junto. Num plano pago, um clique carrega toda avaliação passada da App Store, então a linha de tendência começa cheia em vez de se preencher ao longo do próximo trimestre. Conecte a listagem numa terça-feira de manhã e você já pode consultar três anos de avaliações naquela mesma tarde.

every 30 min at query time
App Store R Google Sheets BigQuery
App Store
reviews
Reviewflowz Sheet in
your Drive
External
table
BigQuery Run once
CREATE EXTERNAL TABLE
  reviews.app_store_reviews
OPTIONS (
  format = 'GOOGLE_SHEETS',
  uris = ['https://docs.google.com/...'],
  sheet_range = 'Reviews'
)

Prefer a native partitioned table? The other road is the Review API and a load job you run on your own schedule.

O build que a Apple nunca anexou à avaliação

Como a Apple deixa a versão do app de fora de uma avaliação, nenhuma ferramenta de avaliações consegue te dizer sobre qual build uma estrela é. O seu warehouse consegue, e faz isso com dados que você já tem: uma tabela de lançamentos com a versão e a data em que foi publicada, que é exatamente o que falta à Apple.

Junte as duas pela data e a qualidade de avaliação por versão volta. A 4.1 fica em 4,6 em duas mil avaliações, a 4.2 cai para 2,9 em quatrocentas, e o hotfix 4.2.1 recupera para 4,5. É esse o post-mortem do lançamento, e é um único JOIN em vez de um projeto.

O mesmo movimento funciona com tudo o mais que você guarda. Assinaturas, volume de tickets, sessões sem falhas, receita por loja: junte pela chave ou pelo intervalo de datas que você já usa, e se as pessoas que deixam uma estrela cancelam mais rápido deixa de ser um palpite e vira um número.

Esse é o motivo inteiro para colocar avaliações num warehouse em vez de lê-las numa ferramenta. Uma ferramenta de avaliações só consegue te contar sobre avaliações. O warehouse é onde uma avaliação fica ao lado do lançamento, da falha e do reembolso que a explicam.

App Store app_store_reviews
review_date
score
country
releases your data
version
shipped_at
JOIN ON r.review_date >= x.shipped_at
version avg rating reviews
4.1 4.6 2,104
4.2 2.9 488
4.2.1 4.5 301

O seu projeto, as suas regras

A tabela vive no seu projeto do Google Cloud, na região que você escolheu, sob o IAM que você já usa e a política de retenção que você já escreveu. Dar acesso a um cientista de dados são os mesmos poucos cliques de qualquer outro conjunto de dados, e tirar o acesso depois são os mesmos poucos cliques de volta.

Você escolhe o que sai. Escolha as listagens da App Store, e por listagem escolha as lojas. Deixe a lista de países vazia e todo mercado em que o app vende é incluído, ou nomeie Japão e Alemanha e só essas linhas chegam. Adicione um filtro de nota e a tabela guarda só de uma a três estrelas e mais nada.

Assim o time de localização recebe um conjunto de dados só dos seus mercados sem que ninguém precise manter um filtro, e o líder de suporte recebe um só das notas baixas, da mesma conta e das mesmas listagens. Dois escopos alimentando duas tabelas é uma configuração normal, não um contorno.

Uma coisa vale a pena saber antes de dimensionar qualquer coisa: o volume de avaliações da App Store não é distribuído uniformemente. Ele se acumula nas horas depois de um lançamento e nos dias depois de um destaque, então uma tabela que parece parada o mês inteiro reúne a maioria das suas linhas em duas tardes.

BigQuery

Your Google Cloud project

fjord-analytics.reviews

Location

europe-west1

Access

your IAM

Retention

your policy

What flows in

Listings
Fjord Fjord Pro
Countries
JapanGermanyUnited States + 31 more

Leave it empty and every storefront is included.

Rating
1 to 3 stars selected

Avaliações pertencem ao lado do lançamento que as causou.

Configure em menos de cinco minutos. Sem necessidade de demo.

Existe um conector nativo para o BigQuery?

Não, e seria desonesto sugerir que existe. O Reviewflowz sincroniza uma planilha do Google Sheets no seu próprio Drive, e o BigQuery lê essa planilha como uma tabela externa com uma única instrução CREATE EXTERNAL TABLE. Se você preferir uma tabela particionada nativa, a Review API mais um job de carga agendado te levam lá. As duas são trabalho comum para um time de dados, e nenhuma precisa de demo.

Quão atualizada é a tabela?

O Reviewflowz consulta a App Store a cada duas horas por padrão, a cada dez minutos na configuração de alta frequência, e sincroniza a planilha a cada 30 minutos. Uma tabela externa lê a planilha no momento da consulta, então uma consulta que você roda agora vê o que a última sincronização escreveu. Um job de carga numa tabela nativa fica tão atualizado quanto a sua agenda.

Quais colunas a tabela tem?

O id da avaliação, o app, a plataforma, a data e a hora da avaliação, a nota, o título, o texto completo, o país da loja, o idioma detectado, o apelido de quem avaliou, as tags e um link de volta para a avaliação. A Apple não anexa a versão do app a uma avaliação, então não há coluna de versão. Junte a sua própria tabela de lançamentos pela data para recuperar números por build.

A primeira carga inclui o nosso histórico da App Store?

Sim, num plano pago: um clique carrega toda avaliação passada da App Store, então a linha de tendência já está cheia desde o primeiro dia em vez de daqui a três meses. 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 a avaliação depois que lançamos a correção?

A linha se atualiza no lugar com a nova nota e o novo texto, então uma consulta sobre ela se move junto com a correção. Quando a Apple remove uma avaliação da loja, a linha é apagada na próxima sincronização, o que significa que a tabela nunca guarda uma versão da verdade que a App Store já não guarda mais.

Preciso de uma demo para começar?

Não. Conecte a sua listagem da App Store e a planilha do Google Sheets sozinho em menos de cinco minutos, depois rode um único CREATE EXTERNAL TABLE contra ela. Teste grátis de 14 dias, sem cartão de crédito.