Démarrage rapide avec l'outil de ligne de commande bq

Cette page explique comment utiliser l'outil de ligne de commande bq pour exécuter des requêtes, ou charger et exporter des données.

Avant de commencer

Avant de commencer à utiliser ce guide de démarrage rapide, servez-vous de la console Google Cloud Platform pour créer ou sélectionner un projet et activer la facturation. Vous devez également installer le SDK Google Cloud.

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Select or create a Google Cloud Platform project.

    Go to the Manage resources page

  3. Assurez-vous que la facturation est activée pour votre projet.

    En savoir plus sur l'activation de la facturation

  4. Install and initialize the Cloud SDK.
  5. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet existant, accédez à Activez BigQueryl'API requise.

    Activer l'API.

Examiner une table

BigQuery propose plusieurs exemples de tables sur lesquels vous pouvez exécuter des requêtes. Dans cet atelier, vous allez exécuter des requêtes sur la table Shakespeare, qui contient une entrée pour chaque mot du texte des pièces de l'auteur.

Pour examiner le schéma d'une table spécifique, exécutez la commande suivante :

bq show projectId:datasetId.tableId

où les ID de projet et d'ensemble de données peuvent être omis s'ils correspondent aux valeurs par défaut de votre outil bq. L'exemple suivant permet d'examiner la table shakespeare de l'ensemble de données samples :

bq show publicdata:samples.shakespeare

Sortie :

Table publicdata: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 la commande 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, lancez 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 ').

L'exemple ci-dessous permet de comptabiliser le nombre d'occurrences de la sous-chaîne "raisin" dans toutes les œuvres de Shakespeare. La requête présentée est sensible à la casse. Les comparaisons de chaînes sont également sensibles à la casse, sauf si vous utilisez la fonction SQL IGNORE CASE.

bq query "SELECT word, SUM(word_count) as count FROM publicdata:samples.shakespeare WHERE word CONTAINS 'raisin' GROUP BY word"

Sortie :

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 qui porte sur le terme "huzzah" ne renvoie aucun résultat :

bq query "SELECT word FROM publicdata:samples.shakespeare WHERE word = 'huzzah' IGNORE CASE"

Sortie :

Waiting on job_e19 ... (4s) Current status: DONE
$

Créer une table

Maintenant, créez votre propre table. Chaque table doit se trouver dans un ensemble de données, qui correspond tout simplement à un groupe de tables. Un ensemble de données est affecté à un projet.

Étape 1 : Télécharger des données personnalisées

Les données personnalisées incluent environ 7 Mo de données relatives aux prénoms de bébé populaires, qui sont fournies par l'Administration de la sécurité sociale des États-Unis.

  1. Téléchargez le fichier zip des prénoms de bébé.

  2. Décompressez le fichier sur votre disque dur.

    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

  3. Ouvrez le fichier nommé yob2010.txt pour en avoir un aperçu. Il s'agit d'un fichier CSV contenant les trois colonnes suivantes : nom, sexe (M ou F) et nombre d'enfants portant ce nom. Le fichier ne comporte pas de ligne d'en-tête.

  4. Copiez ou placez le fichier yob2010.txt dans le répertoire que vous utilisez pour exécuter les commandes bq.

Étape 2 : Créer un ensemble de données

  1. Exécutez la commande bq ls pour savoir si votre projet par défaut comporte déjà des ensembles de données.

    bq ls

    Exemple de résultat :

      datasetId
     -------------
      olddataset
  2. Exécutez à nouveau la commande bq ls pour répertorier les ensembles de données d'un projet spécifique en incluant l'ID de projet suivi du signe deux-points (:). L'exemple ci-dessous permet de répertorier les ensembles de données du projet publicdata.
    bq ls publicdata:

    Sortie :

      datasetId
     -----------
      samples
  3. Utilisez la commande bq mk pour créer un ensemble de données nommé 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.
  4. Exécutez la commande bq ls pour vérifier que l'ensemble de données apparaît désormais 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.

  1. Exécutez la commande bq load pour charger votre fichier source dans une nouvelle table nommée names2010 dans l'ensemble de données babynames que vous avez créé précédemment. L'exécution de cette commande s'effectue par défaut 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
    • schema : name:string,gender:string,count:integer

    Exemple de résultat :

    Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE
  2. Exécutez la commande bq ls pour vérifier que la table apparaît désormais dans l'ensemble de données.

    bq ls babynames

    Sortie :

       tableId    Type
     ----------- -------
      names2010   TABLE
    
  3. 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 les données chargées, vous pouvez demander explicitement à BigQuery, au moyen de l'indicateur -E, de traiter ces dernières avec l'encodage Latin-1. Pour en savoir plus, consultez l'article sur l'encodage des caractères.

Étape 4 : Exécuter des requêtes

  1. 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 |
    +----------+-------+
    
  2. 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

Afin d'éviter que des frais ne soient facturés sur votre compte GCP pour les ressources utilisées dans ce démarrage rapide, procédez comme suit :

  1. Exécutez la commande bq rm pour supprimer l'ensemble de données babynames. Utilisez l'indicateur -r pour supprimer toutes les tables de l'ensemble de données, y compris la table names2010.

    bq rm -r babynames
    
  2. Confirmez la commande de suppression en saisissant y.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.