Charger et interroger des données avec l'outil bq

Découvrez comment créer un ensemble de données, charger des exemples de données et interroger des tables à l'aide de l'outil de ligne de commande bq.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. 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

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

  4. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  5. Si vous n'activez pas la facturation pour le projet Cloud que vous utilisez dans ce tutoriel, vous utiliserez les données du bac à sable BigQuery. Le bac à sable BigQuery vous permet d'apprendre à utiliser BigQuery avec un ensemble limité de fonctionnalités offertes.

  6. Vérifiez que l'API BigQuery est activée.

    Activer l'API

    Si vous avez créé un nouveau projet, l'API BigQuery est automatiquement activée.

  7. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

Télécharger le fichier de données publiques source

  1. Téléchargez le fichier ZIP des prénoms donnés aux enfants.
  2. Extrayez le fichier ZIP. Il 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 des prénoms donnés aux enfants
  3. Ouvrez le fichier yob2010.txt. Il s'agit d'un fichier CSV contenant les trois colonnes suivantes : prénom, genre attribué à la naissance et nombre d'enfants portant ce prénom. Le fichier ne comporte pas de ligne d'en-tête.
  4. Déplacez le fichier vers votre répertoire de travail.
    • Si vous utilisez Cloud Shell, cliquez sur Plus > Importer, cliquez sur Sélectionner des fichiers, choisissez le fichier yob2010.txt, puis cliquez sur Importer.
    • Si vous utilisez un shell local, copiez ou déplacez le fichier yob2010.txt dans le répertoire dans lequel vous exécutez l'outil bq.

Créer un ensemble de données

  1. Créez un ensemble de données nommé babynames :

    bq mk babynames
    

    Le résultat ressemble à ce qui suit :

    Dataset 'myproject:babynames' successfully created.
    

    Le nom d'un ensemble de données peut comporter jusqu'à 1 024 caractères et comprend les caractères suivants : A-Z, a-z, 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.

  2. Vérifiez que l'ensemble de données babynames apparaît maintenant dans votre projet :

    bq ls
    

    Le résultat ressemble à ce qui suit :

      datasetId
    -------------
      babynames
    

Charger des données dans une table

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

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

    Le résultat ressemble à ce qui suit :

    Upload complete.
    Waiting on bqjob_r3c045d7cbe5ca6d2_0000018292f0815f_1 ... (1s) Current status: DONE
    

    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 bq load -E=ISO-8859-1. Pour en savoir plus, consultez la section Encodage.

  2. Vérifiez que la table names2010 apparaît maintenant dans l'ensemble de données babynames :

    bq ls babynames
    

    Le résultat renvoyé ressemble à ceci : Certaines colonnes sont omises pour simplifier la sortie.

      tableId     Type
    ----------- ---------
     names2010    TABLE
    
  3. Vérifiez que le schéma de la table de votre nouvelle table names2010 est name: string, assigned_sex_at_birth: string et count: integer :

    bq show babynames.names2010
    

    Le résultat renvoyé ressemble à ceci : Certaines colonnes sont omises pour simplifier la sortie.

      Last modified        Schema                      Total Rows   Total Bytes
    ----------------- ------------------------------- ------------ ------------
    14 Mar 17:16:45   |- name: string                    34089       654791
                      |- assigned_sex_at_birth: string
                      |- count: integer
    

Interroger les données de la table

  1. Déterminez les prénoms de filles les plus populaires dans les données :

    bq query --use_legacy_sql=false \
        'SELECT
          name,
          count
        FROM
          `babynames.names2010`
        WHERE
          assigned_sex_at_birth = "F"
        ORDER BY
          count DESC
        LIMIT 5;'
    

    Le résultat ressemble à ce qui suit :

    +----------+-------+
    |   name   | count |
    +----------+-------+
    | Isabella | 22925 |
    | Sophia   | 20648 |
    | Emma     | 17354 |
    | Olivia   | 17030 |
    | Ava      | 15436 |
    +----------+-------+
    
  2. Déterminez les prénoms de garçons les moins populaires dans les données :

    bq query --use_legacy_sql=false \
        'SELECT
          name,
          count
        FROM
          `babynames.names2010`
        WHERE
          assigned_sex_at_birth = "M"
        ORDER BY
          count ASC
        LIMIT 5;'
    

    Le résultat ressemble à ce qui suit :

    +----------+-------+
    |   name   | count |
    +----------+-------+
    | Aamarion |     5 |
    | Aarian   |     5 |
    | Aaqib    |     5 |
    | Aaidan   |     5 |
    | Aadhavan |     5 |
    +----------+-------+
    

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

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, supprimez le projet Google Cloud contenant les ressources.

Supprimer le projet

Si vous avez utilisé le bac à sable BigQuery pour interroger l'ensemble de données public, la facturation n'est pas activée pour votre projet.

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer les ressources

Si vous avez utilisé un projet existant, supprimez les ressources que vous avez créées :

  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.

    Le résultat ressemble à ce qui suit :

    rm: remove dataset 'myproject:babynames'? (y/N)
    
  2. Pour confirmer la commande de suppression, saisissez y.

Étapes suivantes