Avis Google vers BigQuery
Chaque avis Google comme une ligne dans votre propre projet, portant le site concerné. Ce qui veut dire que la question cesse d'être quelle est la note, pour devenir quel site s'écarte de ceux qui lui ressemblent.
Configuration en moins de cinq minutes • Sans démo
La question, c'est quel site s'écarte
Le profil d'établissement Google vous donne une note par site et une liste d'avis en dessous. Il ne vous dira jamais que trente et un sites se situent entre 4,5 et 4,7 pendant qu'un seul est à 3,4, parce qu'il n'a aucun moyen de mettre ces chiffres côte à côte. Dans l'entrepôt de données, c'est un GROUP BY et un ORDER BY, et ça tient sur un seul écran.
Google classe chaque avis sous un site, et Reviewflowz donne à chaque site son propre profil, donc le nom du site s'écrit sur chaque ligne plutôt que d'être déduit du texte. Un problème propre à un site a alors une forme que vous pouvez interroger.
Cette forme est le diagnostic. Un changement de prix se lit comme tout le parc qui dérive ensemble. Un trou dans le planning, un terminal de carte qui a cessé de fonctionner, un responsable parti en mars, ça se lit comme un seul site qui chute pendant que ses voisins tiennent bon. Le site vous dit qui appeler, et ça prend une requête plutôt qu'une intuition.
La suite est une clause WHERE, parce que le texte complet de l'avis est une colonne ordinaire. Comptez les avis mentionnant le stationnement depuis mars, répartis par site, et vous avez le problème de parc avant que quiconque ne le soulève en réunion régionale.
-- which sites are behind their own region
SELECT r.location,
ROUND(AVG(r.score), 1) AS rating,
COUNT(*) AS reviews
FROM `halcyon-analytics.reviews.google_reviews` r
JOIN `halcyon-analytics.ops.sites` s USING (location)
WHERE r.review_date >= '2026-03-01'
GROUP BY r.location
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 Google : le site, l'ID de l'avis, l'horodatage, la note, le texte complet, la langue détectée, les tags et un lien de retour vers l'avis sur Maps. Des colonnes ordinaires, rien à rétro-ingénierer, rien que vous devez nous demander d'ajouter.
Le site est sur chaque ligne parce que Google vous donne un profil par site et que Reviewflowz maintient cette correspondance. Il arrive sous le nom que Google détient plutôt que sous un ID, donc vous nommez vous-même cette colonne quand vous déclarez la table.
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 en français laissé sur une fiche bruxelloise se groupe quand même comme vous l'attendez.
Une colonne que vous ne trouverez pas, et ça vaut la peine de le dire clairement : cette table porte l'avis, pas la réponse. La couverture des réponses par site est une question légitime, et une page qui laisserait croire que celle-ci y répond vous coûterait une matinée.
One row per review, tagged to the site
| review_id | STRING | Stable, so updates land in place |
| review_date | TIMESTAMP | When the review was posted |
| score | FLOAT64 | 1.0 to 5.0 |
| review_text | STRING | The full text, queryable |
| language | STRING | Detected from the text |
| tags | STRING | Themes, filled as reviews arrive |
| review_url | STRING | Back to the review on Google Maps |
Google gives one profile per location, so the site name is on every row.
Comment les lignes atteignent concrètement 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 Google devient une nouvelle ligne dans la demi-heure, un avis modifié met à jour sa ligne sur place, et un avis que Google 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 google_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 plutôt qu'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 qu'une équipe data écrit une fois.
Dans les deux cas, l'historique vient avec. Sur un forfait payant, un clic charge chaque avis Google passé sur tous les sites, pour que la courbe de tendance démarre pleine plutôt que de se remplir sur le trimestre suivant.
reviews Sheet in
your Drive External table
in BigQuery
CREATE EXTERNAL TABLE
`halcyon-analytics.reviews.google_reviews`
OPTIONS (
format = 'GOOGLE_SHEETS',
uris = ['https://docs.google.com/spreadsheets/d/1a9F...'],
skip_leading_rows = 1
) Reads the sheet at query time, so there is nothing to schedule and nothing to keep alive.
Joignez-le à ce que vous gardez déjà par site
Le site est une clé de jointure que vous avez déjà. Toute entreprise avec plus d'un site garde une table avec une ligne par site : chiffre d'affaires, heures de personnel, fréquentation, horaires d'ouverture, la date de la dernière rénovation. Les avis Google arrivent tagués de la même façon, donc réunir les deux tient en un JOIN plutôt qu'en un projet.
C'est là que vivent les chiffres intéressants. La note à côté du chiffre d'affaires par visite montre ce que coûte réellement un mauvais trimestre dans une agence. La note à côté des heures de planning montre si le site dont tout le monde se plaint est celui que personne n'a doté en personnel.
Ça corrige aussi la comparaison. Un 3,4 ne veut dire quelque chose qu'à côté des sites qui lui ressemblent, donc joignez vos propres segments, centre-ville face à zone commerciale, et comparez un site à ses pairs plutôt qu'à une moyenne de parc.
Voilà toute la raison de mettre les avis Google 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é du personnel, des recettes et de la rénovation qui l'expliquent, et où l'explication est une colonne plutôt qu'une théorie.
Ce qu'une moyenne mensuelle cache
Le volume d'avis Google suit la fréquentation, pas un calendrier de sorties. Il grimpe le vendredi, double le samedi et reste élevé le dimanche, puis rebondit pendant quinze jours après une campagne locale. Une moyenne mensuelle se situe au-dessus de cinq de ces jours et bien en dessous des deux autres, donc elle n'en décrit aucun.
C'est un problème de modélisation plutôt que de reporting, exactement ce à quoi sert un entrepôt de données. Comparez ce qui est comparable par jour de la semaine, mettez une fenêtre de sept jours sur la tendance, et un mauvais samedi cesse de se cacher dans un chiffre mensuel.
Vous choisissez ce qui en sort. Choisissez les sites, et ajoutez un filtre de note si vous en voulez un, pour que l'équipe du parc obtienne chaque site et que le responsable support obtienne une table ne contenant qu'un à trois étoiles et rien d'autre.
Et la table vit dans votre propre 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 là-dedans, et le retirer de nouveau prend les mêmes quelques clics en sens inverse.
A monthly average sits above five days and under two, which is why the warehouse models this and a report does not.
Une note toute seule n'explique rien. Le site à côté, si.
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.
Le site arrive-t-il vraiment sur chaque ligne ?
Oui. Google vous donne un profil par site, et Reviewflowz maintient cette correspondance un-à-un, donc chaque ligne d'avis porte le site auquel elle appartient. Elle arrive sous le nom de site que Google détient plutôt que sous un ID à vous, donc vous déclarez cette colonne comme site à la création de la table externe et faites correspondre les noms à vos propres clés de site une fois. Ensuite, c'est une clé de jointure ordinaire.
À quel point la table est-elle à jour ?
La feuille se resynchronise toutes les 30 minutes, et 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 le calendrier que vous lui donnez.
Quelles colonnes contient la table ?
La feuille synchronisée a un en-tête fixe de 28 colonnes, une ligne par avis : l'ID de l'avis, le site, la plateforme, la date de l'avis, la note, le titre, le texte complet, la langue détectée, le nom de l'auteur, les tags, un lien de retour vers l'avis, et le reste. Il n'y a pas de colonne de réponse et il n'y a pas d'onglets par plateforme, donc tout tient dans une seule table plate sur laquelle vous pouvez pointer un schéma.
Le premier chargement inclut-il notre historique d'avis Google ?
Oui, sur un forfait payant : un clic charge chaque avis Google passé sur tous vos sites, 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 ou supprime son avis ?
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 un avis disparaît de votre fiche Google, sa ligne s'en va à la synchronisation suivante, ce qui veut dire que la table ne garde jamais une version de la vérité que Google n'a plus.
Ai-je besoin d'une démo pour commencer ?
Non. Connectez vous-même votre profil d'établissement Google 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.





