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

Ce guide de démarrage rapide explique comment utiliser l'outil de ligne de commande bq pour exécuter des requêtes et charger des données dans BigQuery.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Si vous utilisez un projet préexistant, activez l'API BigQuery. BigQuery est automatiquement activé dans les nouveaux projets.

    Activer l'API

  3. Facultatif : Activez la facturation pour le projet. Les étapes décrites dans ce document demeurent valables, même si vous ne souhaitez pas activer la facturation ou fournir une carte de crédit. BigQuery fournit un bac à sable permettant d'accomplir les étapes.
  4. Dans Cloud Console, activez Cloud Shell.

    Activer Cloud Shell

    Dans ce guide de démarrage rapide, vous allez exécuter toutes les commandes de l'outil bq dans Cloud Shell à partir de Cloud Console.

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.

  • Examinez la table shakespeare de l'ensemble de données samples :

     bq show bigquery-public-data:samples.shakespeare

    Cet exemple de commande examine le schéma d'une table spécifique. Si les ID de projet et d'ensemble de données sont les valeurs par défaut de votre outil bq, vous pouvez les omettre dans la commande bq show et spécifier simplement l'ID de la table :

     bq show shakespeare

    Le résultat ressemble à ce qui suit :

    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

  1. Affichez des informations détaillées sur l'outil bq :

    bq help
  2. Affichez les informations sur une commande spécifique :

    bq help query

    Dans cet exemple, l'appel de la méthode bq help récupère des informations sur la commande bq query.

Exécuter une requête

  1. Pour voir combien de fois la sous-chaîne raisin apparaît dans les œuvres de Shakespeare, exécutez une requête à l'aide de la commande bq query :

    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'

    Le résultat ressemble à ce qui suit :

    Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status:
    DONE
    +---------------+-------+
    |     word      | count |
    +---------------+-------+
    | Praising      |   4   |
    | raising       |   5   |
    | raisins       |   1   |
    | praising      |   8   |
    | dispraising   |   2   |
    | dispraisingly |   1   |
    +---------------+-------+
    

  2. Pour savoir combien de fois la sous-chaîne huzzah apparaît dans les œuvres de Shakespeare, exécutez la requête suivante :

    bq query --use_legacy_sql=false \
    'SELECT
     word
    FROM
     `bigquery-public-data`.samples.shakespeare
    WHERE
     word = "huzzah"'
    
    Comme la sous-chaîne n'apparaît pas dans les œuvres de Shakespeare, aucun résultat n'est renvoyé.

    Le résultat ressemble à ce qui suit :

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

Créer une table

Dans les sections suivantes, vous allez créer une table et la placer dans un nouvel ensemble de données.

Télécharger les données de l'exemple

Les exemples de données sont fournis par l'Administration de la sécurité sociale des États-Unis et contiennent environ 7 Mo de données correspondant aux prénoms populaires donnés aux bébés.

  1. Téléchargez et extrayez le fichier ZIP des prénoms de bébé.

    Le fichier zip contient un fichier nommé NationalReadMe.pdf qui décrit le schéma de l'ensemble de données. En savoir plus sur l'ensemble de données

  2. Ouvrez le fichier yob2010.txt pour obtenir un aperçu de son contenu. Le fichier contient des valeurs séparées par des virgules pour les trois colonnes suivantes : prénom, sexe (M ou F) et nombre d'enfants portant ce prénom. Le fichier ne comporte pas de ligne d'en-tête.

  3. Copiez ou déplacez le fichier yob2010.txt dans le répertoire où vous exécutez l'outil de ligne de commande bq. Si vous exécutez l'outil de ligne de commande bq dans Cloud Shell, importez le fichier yob2010.txt. Pour en savoir plus, consultez la page Gérer des fichiers avec Cloud Shell.

Créer un ensemble de données

  1. Vérifiez si votre projet par défaut comporte déjà des ensembles de données :

    bq ls
        

    Le résultat ressemble à ce qui suit :

      datasetId
     -------------
      olddataset
  2. Répertoriez les ensembles de données dans un projet spécifique en incluant l'ID de projet suivi d'un deux-points (:) :
    bq ls publicdata:

    Cet exemple répertorie les ensembles de données du projet publicdata.

    Le résultat ressemble à ce qui suit :

      datasetId
     -----------
      samples
  3. Dans le projet que vous avez sélectionné pour ce démarrage rapide, créez un ensemble de données nommé babynames :
    bq mk babynames

    Le nom d'un ensemble de données peut comporter jusqu'à 1 024 caractères et comprend les caractères suivants  : AZ, az, 0-9 et trait de soulignement. Le nom ne peut pas commencer par un chiffre ni un trait de soulignement, et ne peut pas contenir d'espace.

    Le résultat ressemble à ce qui suit :

    Dataset 'myprojectid:babynames' successfully created.
  4. Confirmez que l'ensemble de données apparaît maintenant dans le projet par défaut :
    bq ls

    Le résultat ressemble à ce qui suit :

      datasetId
     -------------
      olddataset
      babynames

Importer la table

  1. Dans l'ensemble de données babynames que vous avez créé, chargez le fichier source yob2010.txt dans une nouvelle table appelée names2010 :

    bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

    La commande bq load crée une table et charge les données en une seule étape.

    La commande inclut les arguments suivants :

    • datasetID : babynames
    • tableID : names2010
    • source : yob2010.txt (si nécessaire, incluez le chemin d'accès complet)
    • schema : name:string,gender:string,count:integer

    Le résultat ressemble à ce qui suit :

    Upload complete.
    Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s)
    Current status: DONE
  2. Vérifiez que la table apparaît maintenant dans l'ensemble de données :

    bq ls babynames

    Le résultat ressemble à ce qui suit :

       tableId    Type
     ----------- -------
      names2010   TABLE
    
  3. Afficher le schéma :

    bq show babynames.names2010

    Le résultat ressemble à ce qui suit :

    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.

Exécuter des requêtes

  1. Indiquez 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"

    Le résultat ressemble à ce qui suit :

    Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE
    +----------+-------+
    |   name   | COUNT |
    +----------+-------+
    | Isabella | 22731 |
    | Sophia   | 20477 |
    | Emma     | 17179 |
    | Olivia   | 16860 |
    | Ava      | 15300 |
    +----------+-------+
    
  2. Voir les noms de garçons les plus inhabituels :
    bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"

    Le nombre minimal est cinq, car les données sources omettent les prénoms pour lesquels moins de cinq occurrences sont comptabilisées.

    Le résultat ressemble à ce qui suit :

    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 cette page soient facturées sur votre compte Google Cloud :

  1. Supprimez l'ensemble de données babynames :

    bq rm --recursive=true babynames

    L'option --recursive supprime toutes les tables de l'ensemble de données, y compris la table names2010.

  2. Pour confirmer la commande de suppression, saisissez y.

Remarque : Si vous avez suivi ce guide de démarrage rapide dans un nouveau projet, vous pouvez supprimer le projet.

Étape suivante