BigQuery est l'entrepôt de données de Google, entièrement géré et sans serveur, qui permet aux entreprises de stocker et de traiter de grandes quantités de données sans avoir à investir dans une infrastructure. Pour extraire des données de BigQuery, il est possible d'utiliser la syntaxe SQL pour exécuter des requêtes.
Dans cet article, vous trouverez un guide simple de la syntaxe SQL de BigQuery et apprendrez à écrire vos premières requêtes SQL.
Syntaxe SQL de BigQuery
La syntaxe SQL fait référence aux règles du langage que vous devez respecter lorsque vous écrivez des requêtes SQL. Chaque fois que vous écrivez une requête, vous utilisez des mots-clés tels que SELECT, FROM, WHERE et ORDER BY.
Note : Afin d'améliorer la lisibilité, nous suivrons quelques bonnes pratiques pour écrire des requêtes SQL.
1) Nous utiliserons des majuscules pour faire la distinction entre les mots-clés et les tableaux ou colonnes. Par conséquent, nous mettrons les mots-clés en majuscules, mais nous utiliserons des minuscules pour tous les tableaux et toutes les colonnes.
2) Bien que nous puissions écrire plusieurs déclarations sur la même ligne, nous séparerons les déclarations en utilisant de nouvelles lignes.
Si vous souhaitez commencer à utiliser BigQuery, vous trouverez ci-dessous un guide de démarrage rapide de la syntaxe SQL.
SELECTIONNER
Nous utiliserons l'instruction SELECT pour sélectionner les colonnes que la requête renverra.
Syntaxe SELECT
SELECT colonne1, colonne2, ...
FROM nom_de_table ;
Dans cet exemple, nous allons vous montrer comment utiliser des requêtes SQL pour extraire des données d'un ensemble de données de basket-ball de la NCAA.
Tout d'abord, nous allons exécuter une requête SQL pour sélectionner trois colonnes - school_ncaa, name et alias - dans cet ensemble de données.
Après l'instruction SELECT, ajoutez toutes les colonnes que vous souhaitez sélectionner, en les séparant par des virgules. La clause FROM spécifie la table que nous interrogeons pour récupérer les données.
SELECT école_ncaa, nom, alias
FROM `bigquery-public-data.ncaa_basketball.mbb_teams` ;
Cette requête a retourné des lignes avec les colonnes suivantes :
- school_ncaa - Cette colonne contient le nom de l'école associée à chaque équipe.
- nom - Cette colonne contient le nom de l'équipe pour chaque ligne.
- alias - Cette colonne contient les alias courants ou les noms abrégés utilisés pour certaines équipes.
Comme vous pouvez le voir, il a renvoyé toutes les données que j'ai demandées, réparties en colonnes.
Dans cet exemple, j'ai demandé à BigQuery de renvoyer les données de ces trois colonnes. Si vous souhaitez sélectionner toutes les colonnes de l'ensemble de données, utilisez plutôt un astérisque (*).
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mbb_teams` ;
OÙ
Nous utiliserons la clause WHERE pour filtrer les données de l'ensemble de données.
Syntaxe WHERE
SELECT colonne1, colonne2, ...
FROM nom_table
ÉTANT DONNÉ l'état ;
Supposons que je veuille extraire des données de toutes les colonnes, mais uniquement pour les lignes dont la colonne nom est égale à ‘Crimson’.
Décortiquons donc la formule :
SELECT * - Cette option indique que toutes les colonnes doivent être retournées. L'astérisque (*) sélectionne toutes les colonnes.
FROM bigquery-public-data.ncaa_basketball.mbb_teams - Ceci spécifie la table que nous interrogeons, la table mbb_teams.
WHERE name = ‘Crimson’ - Cette clause WHERE filtre les lignes en ne retenant que celles dont la valeur de la colonne name est égale à ‘Crimson’.
SELECT *
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Crimson’ ;
Cette requête SQL BigQuery a renvoyé toutes les colonnes des lignes de la table mbb_teams dont la colonne name est égale à ‘Crimson’.
Je vais maintenant utiliser la condition OR car je veux que BigQuery récupère les lignes qui correspondent aux noms des équipes ‘Crimson’ ou ‘Tigers’. J'ajoute une condition OR à la clause WHERE.
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Crimson’ OR name = ‘Tigers’ ;
BigQuery a maintenant renvoyé des données pour les lignes dont le nom est ‘Crimson’ ou ‘Tigers’.
Si je souhaite renvoyer plusieurs valeurs avec une clause WHERE, je peux ajouter une condition IN à la formule. Lorsque j'ajoute IN à la clause WHERE, BigQuery renvoie toutes les valeurs entre parenthèses.
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name IN (‘Crimson’, ’Tigers’, ’Gators’) ;
Si vous souhaitez ajouter plusieurs filtres ou plusieurs critères à remplir dans les résultats de la requête, vous devez utiliser la condition AND. La condition ET ne renvoie des valeurs que si les deux conditions sont remplies.
Dans cet exemple, je souhaite que BigQuery renvoie des valeurs uniquement pour ces équipes : Tigres d'Auburn ou Tigres de Clemson. Les deux critères doivent donc être remplis. Le nom doit être “Tigers” et l'école doit être Auburn ou Clemson. Voici la formule que j'utiliserai :
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Tigers’ AND school_ncaa = ‘Auburn’ OR school_ncaa = ‘Clemson’ ;
Supposons maintenant que je veuille que BigQuery filtre les lignes dont le nom commence par ‘A’. Contrairement aux exemples précédents, où j'ai utilisé l'instruction WHERE pour renvoyer des valeurs exactes, j'utiliserai ici l'opérateur LIKE pour une correspondance partielle des chaînes. Voici comment utiliser la commande LIKE :
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name LIKE ‘A%’ ;
Voici quelques exemples de la manière dont vous pouvez utiliser la commande LIKE pour filtrer des données sur la base de critères spécifiques.
|
LIKE |
Résultat |
|
LIKE ‘a%’ |
Retourne les valeurs qui commencent par “a” |
|
LIKE ‘%a’ |
Retourne les valeurs qui se terminent par “a” |
|
LIKE ‘%ty%’ (littéralement : "%ty%")’ |
Retourne les valeurs qui ont “ty” dans n'importe quelle position |
|
LIKE ‘_s%’ (en anglais)’ |
Retourne les valeurs qui ont “s” en deuxième position |
|
LIKE ‘a%s’ |
Retourne les valeurs qui commencent par “a” et se terminent par “s” |
Si je souhaite que BigQuery filtre les lignes dont le nom commence par ‘A’, mais exclue les noms commençant par ‘Ag’, je peux ajouter une commande NOT LIKE.
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name LIKE ‘A%’ AND name NOT LIKE ‘Ag%’ ;
ORDER BY
L'instruction ORDER BY est utilisée pour trier les valeurs d'une colonne spécifique par ordre croissant ou décroissant.
ORDER BY syntaxe
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY column1, column2, ... ASC|DESC ;
Je vais écrire une requête pour récupérer les données filtrées par un nom d'équipe spécifique et classer les résultats par école dans l'ordre croissant. Lorsque j'ordonne les résultats par ordre croissant, la condition ASC est facultative.
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Tigers’
ORDER BY school_ncaa ;
Comme vous pouvez le voir, BigQuery a trié les noms des écoles par ordre alphabétique. Si j'ajoute la condition DESC, les noms des écoles seront triés par ordre décroissant.
SELECT alias, école_ncaa, nom, marché
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Tigers’
ORDER BY school_ncaa DESC ;
Comment connecter BigQuery à Google Sheets ?
Et voilà ! Voilà comment vous pouvez écrire vos premières requêtes en utilisant SQL dans BigQuery. Si vous utilisez des feuilles de calcul, consultez cet article sur récupérer automatiquement les données de BigQuery vers Google Sheets.
