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, créez ou sélectionnez un projet dans Google Cloud Console et activez la facturation.

  1. Connectez-vous à votre compte Google.

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

  2. Dans la page de sélection du projet de la console GCP, sélectionnez ou créez un projet GCP.

    Accéder à la page de sélection du projet

  3. Installez et initialisez le SDK Cloud.
  4. BigQuery est automatiquement activé dans les nouveaux projets. Pour activer BigQuery dans un projet préexistant, accédez à Activez les BigQuery requises.

    Activer les API

    .
  5. 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 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 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

La commande bq help vous permet d'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 d'occurrences de la sous-chaîne "raisin" 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 qui porte sur le terme "huzzah" ne renvoie aucun résultat :

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.

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

  2. Décompressez 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.

  3. 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 ou F) et nombre d'enfants portant ce prénom. Le fichier ne comporte pas de ligne d'en-tête.

  4. Copiez ou déplacez le fichier yob2010.txt dans le répertoire où vous exécutez 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à un ensemble 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 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 projet publicdata.
    bq ls publicdata:

    Résultat :

      datasetId
     -----------
      samples
  3. 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.
  4. 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.

  1. À l'aide de la commande bq load, vous allez charger votre fichier source dans une nouvelle table, intitulée names2010, dans l'ensemble de données babynames que vous venez de créer. 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 (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
  2. 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
    
  3. Exécutez la commande bq show pour afficher le schéma :

    bq show babynames.names2010

    Résultat :

    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 vos données utilisent l'encodage ISO-8859-1 (ou Latin-1) et si vous rencontrez des problèmes avec vos données chargées, vous pouvez demander expressément à BigQuery de traiter vos données avec l'encodage Latin-1 à l'aide de l'option -E. 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"

    Résultat :

    Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE
    +----------+-------+
    |   name   | COUNT |
    +----------+-------+
    | Aarian   |     5 |
    | Aaidan   |     5 |
    | Aamarion |     5 |
    | Aadhavan |     5 |
    | Aaqib    |     5 |
    +----------+-------+
    

Nettoyer

Pour éviter que les ressources utilisées dans ce guide démarrage rapide soient facturées sur votre compte Google Cloud :

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

    bq rm -r babynames
    
  2. Saisissez y pour confirmer la commande de suppression.

Étapes suivantes