Avis App Store vers BigQuery
Chaque avis App Store comme une ligne dans votre propre projet, portant le pays de la vitrine et la langue dans laquelle il a été écrit. Les deux questions auxquelles App Store Connect ne répondra jamais deviennent du SQL ordinaire.
Configuration en moins de cinq minutes • Sans démo
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. |
La question à laquelle App Store Connect ne répondra jamais
App Store Connect vous donne une note et une liste. Il ne vous dira jamais que sept vitrines se situent entre 4,4 et 4,7 pendant que le Japon est à 1,6, parce qu'il n'a aucun moyen de mettre ces chiffres côte à côte. Dans BigQuery, c'est un GROUP BY sur une colonne que vous avez déjà, et ça tient en cinq lignes de SQL.
Apple classe chaque avis App Store sous une vitrine, et Reviewflowz écrit cette vitrine sur chaque ligne comme le pays. Le pays est donc une vraie donnée plutôt qu'une supposition à partir de la langue, et un problème propre à un marché a une forme que vous pouvez interroger.
Cette forme est le diagnostic. Un crash se lit comme tous les pays qui chutent ensemble. Une chaîne traduite qui ne tient plus dans son bouton, ou un champ de recherche qui a cessé d'accepter la saisie japonaise, se lit comme un seul pays qui chute pendant que les autres ne bougent pas. Le pays vous dit quelle équipe appeler.
La suite est une clause WHERE, parce que le texte complet de l'avis est une colonne ordinaire. Comptez les avis mentionnant la recherche depuis le premier du mois, répartis par pays, et vous avez le rapport de bug avant que quiconque n'en dépose un.
-- 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 Une table, pas un rapport
Ce qui arrive est une table, pas un tableau de bord conçu par quelqu'un d'autre. Une ligne par avis App Store : l'ID de l'avis, l'horodatage, la note, le titre, le texte complet, le pays, la langue, les tags et un lien de retour vers l'avis. Des colonnes ordinaires, rien à rétro-ingénierer.
Le texte de l'avis est une colonne STRING comme une autre, donc le terme qui vous intéresse est une clause WHERE au lieu d'un après-midi de lecture. Reviewflowz détecte la langue à partir du texte lui-même, ce qui explique pourquoi un avis allemand laissé sur la vitrine suisse se groupe quand même comme vous l'attendez.
Les tags arrivent remplis. Reviewflowz lit chaque avis dans la langue où il a été écrit et le classe sous les thèmes que vos utilisateurs soulèvent, donc un avis une étoile japonais sur la recherche et un avis anglais sur le même sujet portent le même tag et comptent comme un seul chiffre.
Une colonne que vous ne trouverez pas, et ça vaut la peine de le dire clairement : Apple n'attache pas la version de l'appli à un avis, donc rien en aval ne peut en porter une. Quiconque vend une qualité d'avis par version à partir d'un flux App Store vend un champ qu'Apple ne publie pas.
| 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 |
Comment les lignes arrivent concrètement dans BigQuery
Il n'y a pas de destination BigQuery gérée sur laquelle cliquer, et cette page ne prétendra pas le contraire. Ce que Reviewflowz vous donne, c'est une feuille Google Sheets dans votre propre Drive qu'il tient à jour : un nouvel avis App Store devient une nouvelle ligne dans la demi-heure, un avis modifié met à jour sa ligne, et un avis qu'Apple retire perd sa ligne.
BigQuery lit une feuille Google Sheets stockée sur Drive comme une table externe. Un seul CREATE EXTERNAL TABLE pointant vers l'URL de la feuille, et app_store_reviews existe dans votre ensemble de données, s'interroge comme n'importe quelle autre table, et est à jour au moment de la requête parce qu'il lit la feuille, pas une copie. Rien à planifier, rien à maintenir en vie.
Si vous préférez une table native partitionnée, l'API Review est l'autre voie. Interrogez-la ou récupérez le webhook, puis chargez-la avec le job que vous exécutez déjà pour chaque autre source. C'est un travail que votre équipe data écrit une fois, et l'appeler un job plutôt qu'une case à cocher, c'est tout l'intérêt.
Dans les deux cas, l'historique vient avec. Sur un forfait payant, un clic charge chaque avis App Store passé, pour que la courbe de tendance démarre pleine plutôt que de se remplir sur le trimestre suivant. Connectez la fiche un mardi matin, et vous pouvez interroger trois ans d'avis dès l'après-midi.
R reviews Reviewflowz Sheet in
your Drive External
table
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 version qu'Apple n'a jamais attachée à l'avis
Parce qu'Apple omet la version de l'appli sur un avis, aucun outil d'avis ne peut vous dire de quelle version parle un avis une étoile. Votre entrepôt de données le peut, et il le fait avec des données que vous possédez déjà : une table de sorties portant la version et la date de mise en production, exactement ce qui manque à Apple.
Joignez les deux sur la date, et la qualité des avis par version revient. La 4.1 se tient à 4,6 sur deux mille avis, la 4.2 chute à 2,9 sur quatre cents, et le correctif d'urgence 4.2.1 remonte à 4,5. Voilà le post-mortem de sortie, et ça tient en une jointure plutôt qu'en un projet.
La même approche fonctionne sur tout ce que vous conservez d'autre. Abonnements, volume de tickets, sessions sans crash, revenus par vitrine : joignez sur la clé ou la plage de dates que vous utilisez déjà, et savoir si les gens qui laissent des avis une étoile résilient plus vite cesse d'être une intuition pour devenir un chiffre.
Voilà toute la raison de mettre les avis dans un entrepôt de données plutôt que de les lire dans un outil. Un outil d'avis ne peut jamais vous parler que des avis. L'entrepôt de données est l'endroit où un avis se retrouve à côté de la sortie, du crash et du remboursement qui l'expliquent.
Votre projet, vos règles
La table vit dans votre projet Google Cloud, dans la région que vous avez choisie, sous l'IAM que vous gérez déjà et la politique de rétention que vous avez déjà écrite. Accorder l'accès à un data scientist prend les mêmes quelques clics que pour tout autre ensemble de données, et le retirer de nouveau prend les mêmes quelques clics en sens inverse.
Vous choisissez ce qui en sort. Choisissez les fiches App Store, et par fiche choisissez les vitrines. Laissez la liste de pays vide et chaque marché où l'appli se vend est inclus, ou nommez le Japon et l'Allemagne et seules ces lignes arrivent. Ajoutez un filtre de note, et la table ne contient plus qu'un à trois étoiles et rien d'autre.
L'équipe de localisation obtient ainsi un ensemble de données de ses seuls marchés sans que personne n'ait à maintenir un filtre, et le responsable support obtient celui des seules notes basses, à partir du même compte et des mêmes fiches. Deux périmètres alimentant deux tables est une configuration normale, pas un contournement.
Une chose à savoir avant de dimensionner quoi que ce soit : le volume d'avis App Store n'est pas réparti régulièrement. Il s'accumule dans les heures qui suivent une sortie et les jours qui suivent une mise en avant, donc une table qui paraît calme tout le mois collecte l'essentiel de ses lignes en deux après-midis.
Your Google Cloud project
fjord-analytics.reviews
Location
europe-west1
Access
your IAM
Retention
your policy
What flows in
Leave it empty and every storefront is included.
Les avis ont leur place à côté de la sortie qui les a causés.
Configuration en moins de cinq minutes. Sans démo.
Existe-t-il un connecteur BigQuery natif ?
Non, et il serait malhonnête de laisser croire le contraire. Reviewflowz synchronise une feuille Google Sheets dans votre propre Drive, et BigQuery lit cette feuille comme une table externe avec une seule instruction CREATE EXTERNAL TABLE. Si vous préférez une table native partitionnée, l'API Review plus un job de chargement planifié vous y mène. Les deux sont un travail ordinaire pour une équipe data, et aucun des deux n'a besoin d'une démo.
À quel point la table est-elle à jour ?
Reviewflowz vérifie l'App Store toutes les deux heures par défaut, toutes les dix minutes avec le réglage haute fréquence, et synchronise la feuille toutes les 30 minutes. Une table externe lit la feuille au moment de la requête, donc une requête que vous lancez maintenant voit ce que la dernière synchronisation a écrit. Un job de chargement dans une table native est aussi à jour que son calendrier.
Quelles colonnes contient la table ?
L'ID de l'avis, l'appli, la plateforme, la date et l'heure de l'avis, la note, le titre, le texte complet, le pays de la vitrine, la langue détectée, le pseudonyme de l'auteur, les tags et un lien de retour vers l'avis. Apple n'attache pas la version de l'appli à un avis, donc il n'y a pas de colonne de version. Joignez votre propre table de sorties sur la date pour retrouver les chiffres par version.
Le premier chargement inclut-il notre historique App Store ?
Oui, sur un forfait payant : un clic charge chaque avis App Store passé, pour que la courbe de tendance soit pleine dès le premier jour plutôt que dans trois mois. Pendant l'essai gratuit, les nouveaux avis arrivent à mesure qu'ils sont publiés, et l'historique se charge une fois que vous vous abonnez.
Que se passe-t-il quand un auteur modifie son avis après que nous avons livré le correctif ?
La ligne se met à jour sur place avec la nouvelle note et le nouveau texte, donc une requête dessus évolue avec la correction. Quand Apple retire un avis du store, la ligne est supprimée à la synchronisation suivante, ce qui veut dire que la table ne garde jamais une version de la vérité que l'App Store n'a plus.
Ai-je besoin d'une démo pour commencer ?
Non. Connectez vous-même votre fiche App Store et la feuille Google Sheets en moins de cinq minutes, puis exécutez un CREATE EXTERNAL TABLE dessus. Essai gratuit de 14 jours, sans carte bancaire.





