Cette page explique comment utiliser l'outil de ligne de commande bq
pour exécuter des requêtes et charger des données.
Avant de commencer
Avant de commencer à utiliser ce guide de démarrage rapide, créez ou sélectionnez un projet dans Google Cloud Console et activez la facturation.
- Connectez-vous à votre compte Google.
Si vous n'en possédez pas déjà un, vous devez en créer un.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
- Installez et initialisez le SDK Cloud.
- BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à Activez l'API BigQuery. .
- BigQuery fournit un bac à sable si vous ne souhaitez pas ajouter une carte de crédit ni activer la facturation pour votre projet. Les étapes décrites sur cette page fonctionnent quel que soit l'état de facturation du projet. Si vous le souhaitez, vous pouvez également découvrir comment activer la facturation.
Examiner une table
BigQuery propose plusieurs exemples de tables sur lesquelles vous pouvez exécuter des requêtes. Dans ce guide de démarrage rapide, vous allez exécuter quelques requêtes sur la table shakespeare
, qui contient une entrée pour chaque mot du texte de la pièce de Shakespeare.
Pour examiner le schéma d'une table spécifique, exécutez la commande suivante. Si les ID de projet et d'ensemble de données sont les valeurs par défaut de votre outil bq
, vous pouvez omettre les ID de projet et d'ensemble de données.
bq show PROJECT_ID:DATASET_ID.TABLE_ID
L'exemple suivant examine la table shakespeare
de l'ensemble de données samples
:
bq show bigquery-public-data:samples.shakespeare
Résultat :
Table bigquery-public-data:samples.shakespeare Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------------------------ ------------ ------------- ------------ 26 Aug 14:43:49 |- word: string (required) 164656 6432064 |- word_count: integer (required) |- corpus: string (required) |- corpus_date: integer (required)
Exécuter la commande help
Utilisez bq help
pour obtenir des informations détaillées sur l'outil de ligne de commande bq
.
bq help
Incluez un nom de commande pour obtenir des informations sur une commande spécifique. Par exemple, l'appel de bq help
qui est présenté ci-dessous permet de récupérer des informations relatives à la commande query
.
bq help query
Exécuter une requête
Exécutez une requête pour savoir combien de fois la sous-chaîne raisin
apparaît dans les œuvres de Shakespeare.
Pour exécuter une requête, exécutez la commande bq query "SQL_STATEMENT"
.
Échappez tous les guillemets utilisés dans l'instruction
SQL_STATEMENT
à l'aide du symbole\
.Une autre solution consiste à utiliser un type de guillemets autre que celui servant à englober l'instruction (
"
et'
).
La requête en SQL standard suivante permet de comptabiliser le nombre de fois où la sous-chaîne raisin
apparaît dans toutes les œuvres de Shakespeare.
bq query --use_legacy_sql=false \ 'SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE "%raisin%" GROUP BY word'
Résultat :
Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status: DONE +---------------+-------+ | word | count | +---------------+-------+ | Praising | 4 | | raising | 5 | | raisins | 1 | | praising | 8 | | dispraising | 2 | | dispraisingly | 1 | +---------------+-------+
Si vous recherchez un mot qui ne figure pas dans les œuvres de Shakespeare, aucun résultat n'est renvoyé. Par exemple, la recherche suivante pour huzzah
ne renvoie aucune correspondance.
bq query --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare WHERE word = "huzzah"'
Sortie :
Waiting on job_e19 ... (4s) Current status: DONE $
Créer une table
Maintenant, créez votre propre table. Chaque table est stockée dans un ensemble de données, qui correspond à un groupe de ressources telles que des tables et des vues.
Étape 1 : Télécharger les données de l'exemple
Les données de l'exemple contiennent environ 7 Mo de données correspondant aux prénoms populaires donnés aux bébés et sont fournies par l'Administration de la sécurité sociale des États-Unis.
Extrayez le fichier.
Le fichier ZIP contient un fichier Readme qui décrit le schéma de l'ensemble de données. En savoir plus sur l'ensemble de données.
Ouvrez le fichier
yob2010.txt
pour obtenir un aperçu de son contenu. Il s'agit d'un fichier CSV contenant les trois colonnes suivantes : prénom, sexe (M
ouF
) et nombre d'enfants portant ce prénom. Le fichier ne comporte pas de ligne d'en-tête.Copiez ou déplacez le fichier
yob2010.txt
dans le répertoire où vous exécutez l'outil de ligne de commandebq
. Si vous exécutez l'outil de ligne de commandebq
dans Cloud Shell, importez le fichieryob2010.txt
. Consultez la page Gérer des fichiers avec Cloud Shell.
Étape 2 : Créer un ensemble de données
-
Exécutez la commande
bq ls
pour savoir si votre projet par défaut comporte déjà un ensemble de données.bq ls
Exemple de résultat :
datasetId ------------- olddataset
- Exécutez à nouveau la commande
bq ls
pour répertorier les ensembles de données dans un projet spécifique en incluant l'ID de projet suivi d'un deux-points (:). L'exemple ci-dessous permet de répertorier les ensembles de données du projetpublicdata
.bq ls publicdata:
Résultat :
datasetId ----------- samples
-
Exécutez la commande
bq mk
pour créer un ensemble de données intitulébabynames
dans votre projet par défaut. Le nom de l'ensemble de données doit comporter 1 024 caractères au maximum, et contenir uniquement des lettres (A-Z, a-z), des chiffres (0-9) et des traits de soulignement. Il ne doit pas commencer par un nombre ni un trait de soulignement. En outre, il ne peut pas comporter d'espace.bq mk babynames
Exemple de résultat :
Dataset 'myprojectid:babynames' successfully created.
- Exécutez la commande
bq ls
pour vérifier que l'ensemble de données apparaît maintenant dans le projet par défaut :bq ls
Exemple de résultat :
datasetId ------------- olddataset babynames
Étape 3 : Importer la table
La commande bq load
permet de créer ou de mettre à jour une table et d'y charger des données en une seule et même opération.
-
À l'aide de la commande
bq load
, vous allez charger votre fichier source dans une nouvelle table, intituléenames2010
, dans l'ensemble de donnéesbabynames
que vous venez de créer. Par défaut, l'exécution de cette commande s'effectue de manière synchrone et prend quelques secondes.bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer
Arguments de la commande
bq load
:- datasetID :
babynames
- tableID :
names2010
- source :
yob2010.txt
(inclure le chemin d'accès complet vers ce fichier si nécessaire) - schema :
name:string,gender:string,count:integer
Exemple de résultat :
Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE
- datasetID :
-
Exécutez la commande
bq ls
pour vérifier que la table apparaît maintenant dans l'ensemble de données :bq ls babynames
Résultat :
tableId Type ----------- ------- names2010 TABLE
-
Exécutez la commande
bq show
pour afficher le schéma :bq show babynames.names2010
Sortie :
Table myprojectid:babynames.names2010 Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------- ------------ ------------- ------------ 13 Mar 15:31:00 |- name: string 34041 653855 |- gender: string |- count: integer
Par défaut, lorsque vous chargez des données dans BigQuery, ces dernières doivent être encodées au format UTF-8.
Si vous utilisez l'encodage ISO-8859-1 (ou Latin-1) et que vous rencontrez des problèmes avec celui-ci, indiquez à BigQuery de traiter vos données avec l'encodage Latin-1 à l'aide de l'option -E
. Pour en savoir plus, consultez la section Encodage.
Étape 4 : Exécuter des requêtes
-
Exécutez la commande suivante pour renvoyer les prénoms de fille les plus populaires :
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"
Sortie :
Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Isabella | 22731 | | Sophia | 20477 | | Emma | 17179 | | Olivia | 16860 | | Ava | 15300 | +----------+-------+
-
Exécutez la commande ci-dessous pour obtenir la liste des prénoms de garçon les moins courants.
Le nombre minimal est cinq, car les données sources omettent les prénoms pour lesquels moins de cinq occurrences sont comptabilisées.
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"
Sortie :
Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Aarian | 5 | | Aaidan | 5 | | Aamarion | 5 | | Aadhavan | 5 | | Aaqib | 5 | +----------+-------+
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce guide de démarrage rapide soient facturées sur votre compte Google Cloud :
Exécutez la commande
bq rm
pour supprimer l'ensemble de donnéesbabynames
. Utilisez l'option-r
pour supprimer toutes les tables de l'ensemble de données, y compris la tablenames2010
.bq rm -r babynames
Saisissez
y
pour confirmer la commande de suppression.
Étape suivante
Pour en savoir plus sur l'outil de ligne de commande
bq
, consultez la page Utiliser l'outil de ligne de commandebq
.Pour en savoir plus sur le chargement de données dans BigQuery, consultez la page Présentation du chargement des données.
Pour en savoir plus sur l'interrogation de données, consultez la section Présentation des requêtes de données dans BigQuery.
Pour savoir comment exporter des données BigQuery, consultez la page Exporter des données de table.
Pour en savoir plus sur l'accès automatisé à BigQuery, consultez la documentation de référence de l'API REST ou la page Bibliothèques clientes de l'API BigQuery.