Recensioni App Store su BigQuery

Ogni recensione App Store come riga nel suo progetto, con il paese dello storefront e la lingua in cui è scritta. Le due domande a cui App Store Connect non risponde diventano SQL ordinario.

Attivazione in meno di cinque minuti • Nessuna demo richiesta

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

La domanda a cui App Store Connect non risponde

App Store Connect le dà una valutazione e un elenco. Non le dirà mai che sette storefront si collocano tra 4,4 e 4,7 mentre il Giappone è a 1,6, perché non ha modo di mettere quei numeri a confronto. In BigQuery è una GROUP BY su una colonna che ha già, cinque righe di SQL.

Apple archivia ogni recensione App Store sotto uno storefront, e Reviewflowz scrive quello storefront su ogni riga come paese. Il paese è quindi un dato reale e non una supposizione dedotta dalla lingua, e un problema legato a un mercato ha una forma che può interrogare.

Quella forma è la diagnosi. Un crash si legge come tutti i paesi che scendono insieme. Una stringa tradotta che non entra più nel pulsante, o un campo di ricerca che ha smesso di accettare l'input in giapponese, si legge come un solo paese che scende mentre gli altri restano fermi. Il paese le dice quale team chiamare.

Il passo successivo è una clausola WHERE, perché il testo completo della recensione è una colonna come le altre. Conti le recensioni che citano la ricerca dal primo del mese, suddivise per paese, e ha il bug report prima ancora che qualcuno lo apra.

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

Una tabella, non un report

Quello che arriva è una tabella, non una dashboard progettata da qualcun altro. Una riga per ogni recensione App Store: l'id della recensione, la marca temporale, il punteggio, il titolo, il testo completo, il paese, la lingua, i tag e un link di ritorno alla recensione. Colonne semplici, niente da decifrare.

Il testo della recensione è una colonna STRING come le altre, quindi il termine che le interessa è una clausola WHERE invece di un pomeriggio di lettura. Reviewflowz rileva la lingua direttamente dal testo, motivo per cui una recensione in tedesco lasciata sullo storefront svizzero si raggruppa comunque nel modo atteso.

I tag arrivano già compilati. Reviewflowz legge ogni recensione nella lingua in cui è scritta e la archivia sotto i temi sollevati dai suoi utenti, quindi una recensione a una stella in giapponese sulla ricerca e una in inglese sullo stesso tema portano lo stesso tag e vengono contate come un unico numero.

Una colonna che non troverà, ed è bene dirlo apertamente: Apple non allega la versione dell'app alla recensione, quindi nulla a valle può portarla. Chiunque venda la qualità delle recensioni per build a partire da un feed App Store sta vendendo un campo che Apple non pubblica.

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

Come le righe arrivano davvero in BigQuery

Non esiste una destinazione BigQuery gestita da un semplice clic, e questa pagina non farà finta che esista. Quello che Reviewflowz le offre è un Google Sheet nel suo Drive, tenuto sempre aggiornato: una nuova recensione App Store diventa una nuova riga entro mezz'ora, una recensione modificata aggiorna la sua riga, e una recensione che Apple rimuove perde la sua riga.

BigQuery legge un Google Sheet basato su Drive come tabella esterna. Una singola CREATE EXTERNAL TABLE sull'URL del foglio e app_store_reviews esiste nel suo dataset, si interroga come qualsiasi altra tabella, ed è corretta al momento della query perché legge il foglio stesso, non una copia. Niente da pianificare, niente da tenere attivo.

Se preferisce invece una tabella nativa partizionata, la Review API è l'altra strada. La interroghi a intervalli oppure usi il webhook, poi la carichi con il job che usa già per ogni altra fonte. È un lavoro che il suo team dati scrive una sola volta, e chiamarlo job invece che una casella da spuntare è proprio il punto.

In entrambi i casi lo storico arriva insieme al resto. Su un piano a pagamento, un clic carica tutte le recensioni App Store passate, così la linea di tendenza parte già completa invece di riempirsi nel trimestre successivo. Colleghi la scheda martedì mattina e quello stesso pomeriggio può interrogare tre anni di recensioni.

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.

La build che Apple non allega mai alla recensione

Poiché Apple non include la versione dell'app nella recensione, nessuno strumento di recensioni può dirle a quale build si riferisce una recensione a una stella. Il suo warehouse può farlo, e lo fa con dati che ha già: una tabella dei rilasci con la versione e la data in cui è stata pubblicata, esattamente ciò che manca ad Apple.

Colleghi le due tabelle sulla data e la qualità delle recensioni per versione ritorna visibile. La 4.1 è a 4,6 su duemila recensioni, la 4.2 scende a 2,9 su quattrocento, e l'hotfix 4.2.1 recupera a 4,5. Questo è il post-mortem del rilascio, ed è un solo join, non un progetto.

La stessa mossa funziona su tutto il resto che conserva. Abbonamenti, volume di ticket, sessioni senza crash, ricavi per storefront: colleghi sulla chiave o sull'intervallo di date che usa già, e se le persone che lasciano recensioni a una stella abbandonano più in fretta smette di essere un'impressione e diventa un numero.

Questa è l'intera ragione per mettere le recensioni in un warehouse invece di leggerle in uno strumento dedicato. Uno strumento di recensioni può parlarle solo di recensioni. Il warehouse è dove una recensione sta accanto al rilascio, al crash e al rimborso che la spiegano.

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

Il suo progetto, le sue regole

La tabella vive nel suo progetto Google Cloud, nella regione che ha scelto, sotto l'IAM che usa già e la policy di conservazione che ha già scritto. Concedere l'accesso a un data scientist è la stessa manciata di clic di ogni altro dataset, e revocarlo di nuovo è altrettanto rapido.

Sceglie lei cosa esce. Selezioni le schede App Store, e per ogni scheda gli storefront. Lasci vuoto l'elenco dei paesi e sono inclusi tutti i mercati in cui l'app è in vendita, oppure indichi Giappone e Germania e arriveranno solo quelle righe. Aggiunga un filtro sul punteggio e la tabella conterrà solo le recensioni da una a tre stelle.

Così il team di localizzazione ottiene un dataset dei soli mercati che le interessano senza che nessuno debba mantenere un filtro, e il responsabile dell'assistenza ne ottiene uno con solo i punteggi bassi, dallo stesso account e dalle stesse schede. Due ambiti che alimentano due tabelle è una configurazione normale, non un espediente.

Una cosa da sapere prima di dimensionare qualsiasi cosa: il volume di recensioni App Store non è distribuito in modo uniforme. Si accumula nelle ore dopo un rilascio e nei giorni dopo una segnalazione in evidenza, quindi una tabella che sembra silenziosa per tutto il mese raccoglie la maggior parte delle sue righe in due pomeriggi.

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

Le recensioni stanno accanto al rilascio che le ha causate.

Attivazione in meno di cinque minuti. Nessuna demo richiesta.

Esiste un connettore nativo per BigQuery?

No, e sarebbe disonesto lasciarlo credere. Reviewflowz sincronizza un Google Sheet nel suo Drive, e BigQuery legge quel foglio come tabella esterna con una singola istruzione CREATE EXTERNAL TABLE. Se preferisce una tabella nativa partizionata, la Review API più un job di caricamento pianificato la portano lì. Entrambe le strade sono lavoro ordinario per un team dati, e nessuna delle due richiede una demo.

Quanto è aggiornata la tabella?

Reviewflowz controlla l'App Store ogni due ore per impostazione predefinita, ogni dieci minuti con l'impostazione ad alta frequenza, e sincronizza il foglio ogni 30 minuti. Una tabella esterna legge il foglio al momento della query, quindi una query eseguita ora vede quanto scritto dall'ultima sincronizzazione. Un job di caricamento in una tabella nativa è aggiornato quanto la sua pianificazione.

Quali colonne ha la tabella?

L'id della recensione, l'app, la piattaforma, la data e l'ora della recensione, il punteggio, il titolo, il testo completo, il paese dello storefront, la lingua rilevata, il nickname dell'autore, i tag e un link di ritorno alla recensione. Apple non allega la versione dell'app alla recensione, quindi non c'è una colonna versione. Colleghi la sua tabella dei rilasci sulla data per ottenere di nuovo i numeri per build.

Il primo caricamento include il nostro storico App Store?

Sì, su un piano a pagamento: un clic carica tutte le recensioni App Store passate, così la linea di tendenza è completa fin dal primo giorno invece che tra tre mesi. Durante la prova gratuita le nuove recensioni arrivano man mano che vengono pubblicate, e lo storico si carica una volta sottoscritto un piano.

Cosa succede quando un autore modifica la propria recensione dopo che abbiamo rilasciato la correzione?

La riga si aggiorna sul posto con il nuovo punteggio e testo, quindi una query su di essa si muove insieme alla correzione. Quando Apple rimuove una recensione dallo store, la riga viene eliminata alla sincronizzazione successiva, il che significa che la tabella non conserva mai una versione della realtà che l'App Store non ha più.

Serve una demo per iniziare?

No. Colleghi da solo la sua scheda App Store e il Google Sheet in meno di cinque minuti, poi esegua una CREATE EXTERNAL TABLE su di esso. Prova gratuita di 14 giorni, nessuna carta di credito.