Google Sheets QUERY() pour marketeurs (partie 1)

Ah les spreadsheets .. l’amour de ma vie!

Haha.. même moi j’y crois pas en le tappant, je me demande d’ailleurs s’il y’en a qui aiment vraiment les spreadsheets, ou si on l’utilisent tous plus par nécessité que par affection.

Quoiqu’il en soit, dans notre métier, on est très souvent, pour ne pas dire toujours, amené à traiter des données statistiques, et souvent les outils où les données résident sont segmentés, et/ou n’offrent tout simplement pas la possibilité de faire ce dont on a besoin.

On se retrouve inévitablement à devoir faire des exports csv, pour pouvoir aggréger les données dans un tableur et les traiter comme on veut.. c’est comment, malgré moi, je me suis familiarisé petit à petit avec google sheet, je n’ai heureusement jamais trop utilisé Excel (de façon générale je n’utilise rien qui ne soit pas dans le cloud).

Google Sheets VS Excel :

Pendant très longtemps Excel était bien au dessus de Google Sheets en terme de fonctions disponibles, et surtout la puissance des tables pivots, mais ça a changé il y’a un ou 2 ans maintenant, avec l’amélioration des tables pivots sur gSheet, mais surtout l’introduction de la fonction QUERY(), qui est peut être la seule fonction dont vous aurez besoin .. et j’exagère à peine.

Introduction à QUERY()

Quand on traite de la data, une fonction récurrente c’est de rechercher des données quelque part (dans une sheet ou une plage), et lui appliquer des filtres pour l’afficher d’une certaine façon ou l’utiliser dans d’autres calculs.

Tout ça était fait à coup de FILTER(), VLOOKUP() et SUMIF(), qui ont bien servi mais avaient pas mal de limitation que QUERY() fixe, et même améliore.

Pour faire simple, QUERY() apporte la puissance du language de Visualization API de google à sheets, c’est très similaire au SQL donc quand on a des bases de SQL ça simplifie énormément la tâche.

Dans cet article je vais utiliser un exemple concret pour vous montrer comment QUERY() peut vous aider à accomplir beaucoup plus, beaucoup plus facilement.

Etape 1

Pour commencer, voyons voir un exemple tout simple de comment QUERY() fonctionne.

L’équivalent du « hello world » ici est = query(A:C , « select * »,1).

Cette simple requête dis à google sheet de selectionner toutes les données de la plage.

A:C est la plage, « select * » est la requête, et 1 est pour les headers mais pas besoin de s’en soucier pour l’instant.

Vu qu’on query() une autre sheet, on doit ajouter le nom de la sheet à la plage, ce qui donne :

=QUERY(analytics!A:C, « select * »,1)

QUERY() Select * démo

Comme vous pouvez voir, la fonction query() a reproduit exactement le contenu des cellules de la plage sélectionnée de la sheet analytics.

Etape 2

Vous aurez sans doute remarqué la colonne C appelée « noise », dont on n’a pas besoin, on va donc la retirer de la requête, tout simplement en spécifiant à QUERY() les colonnes qu’on veut au lieu de * qui renvoie tout.

=QUERY(analytics!A:C, « select A,B »,1)

Voilà.

QUERY() Select A,B démo

Etape 3

Maintenant, essayons de filtrer la requête pour sélectionner seulement les jours où on a reçu plus de 1000 sessions.

On peut faire ça grâce au paramètre WHERE qui permet de rajouter des conditions à la requête.

=QUERY(analytics!A:C, « select A,B WHERE B > 1000 »,1)

QUERY() WHERE démo

Etape 4

Cool, et si on voulait voir quel jour a reçu le plus de visiteurs ?
On peut utiliser le paramètre ORDER By pour classer les résultats de la requête en fonction d’une colonne.

=query(analytics!A:C, « select A,B WHERE B > 1000 ORDER BY B desc »,1)

QUERY() ORDER BY démo

Etape 5

Pas mal, on voit que le 16 août 2019 a été notre plus grosse journée en terme de visiteurs.
Pour alléger encore plus, disons qu’on veut analyser seulement les 10 meilleures journées.

Pour ça, il nous suffit de spécifier une limite à la requête grâce au paramètre LIMIT.

=query(analytics!A:C, « select A,B WHERE B > 1000 ORDER BY B desc LIMIT 10 »,1)

QUERY() LIMIT démo

Etape 6

Une autre façon de récupérer les résultats comptés, additionnés, ou le maximum, minimum et moyenne est d’utiliser les fonctions algorithmiques count(), sum(), max(), min(), avg().

=query(analytics!A:C, « select count(B), sum(B),max(B),min(B),avg(B) »,1)

QUERY() sum mix max avg démo

Etape 7

Le dernier paramètre important à connaître est GROUP BY, et pour démontrer son utilisation, j’ai modifié la sheet analytics, pour segmenter les données de sessions entre mobile et desktop.

On se retrouve donc avec 2 lignes pour chaque date, et une colonne C qui indique le device.

Voyons maintenant comment on peut récupérer le total du nombre de sessions mobile et desktop séparémment.

=query(analytics!A:C, « select sum(B),C GROUP BY C »,1)

QUERY() GROUP BY démo

Etape 8

Et enfin, un paramètre utile – bien que son format aurait été plus pratique s’il était plus proche du SQL – c’est LABEL, qui permet de renommer les colonnes de résultats, en particulier si on a beaucoup de sum() et autres fonctions dans notre requête.

Voici un exemple avec la requête qu’on a vu un peu plus haut, modifiée pour renommer les colonnes :

=query(analytics!A:C,
« SELECT
count(B), sum(B),max(B),min(B),avg(B)
LABEL
count(B) ‘nombre de lignes’, sum(B) ‘total sessions’, max(B) ‘meilleur jour’, min(B) ‘pire jour’, avg(B) ‘moyenne' »,
1)

QUERY() LABEL

Conclusion

On a fait le tour des fonctionnalités principales de la fonction QUERY(), ce n’est qu’une introduction bien sûr, ça peut devenir bien plus complexe.

Dans la prochaine partie de ce guide, je vous montrerais comment :
– utiliser les dates pour extraire des données d’un mois spécifique par exemple, ou entre 2 dates
– comment concaténer des valeurs
– comment simuler le LIKE de SQL pour rechercher avec des morceaux incomplets
– comment utiliser une query() dans une query() et dans quels cas c’est utile.

Entre temps, dis moi, as tu déjà utilisé cette fonction ? vois tu déjà comment elle pourrait te faciliter la vie ?

As tu des questions par rapport à cette fonction ?