Utiliser l'outil bq

Dans ce tutoriel, vous allez apprendre à utiliser bq, l'outil d'interface de ligne de commande (CLI) basé sur Python pour BigQuery, afin de créer un ensemble de données, de charger des exemples de données et d'interroger des tables. À la fin de ce tutoriel, vous saurez ce qu'est bq et comment utiliser BigQuery à l'aide d'une CLI.

Pour obtenir une explication complète de toutes les commandes et options de bq, consultez la documentation de référence de l'outil de ligne de commande bq.

Avant de commencer

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

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

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

  5. Télécharger le fichier contenant les données sources

    Le fichier que vous téléchargez contient environ 7 Mo de données correspondant aux prénoms populaires donnés aux bébés. Il provient de l'Administration de la sécurité sociale des États-Unis.

    Pour en savoir plus sur les données, consultez les informations générales sur les prénoms populaires de l'Administration de la sécurité sociale.

    1. Téléchargez les données de l'Administration de la sécurité sociale des États-Unis en ouvrant l'URL suivante dans un nouvel onglet du navigateur :

      https://www.ssa.gov/OACT/babynames/names.zip
      
    2. Extrayez le fichier.

      Pour en savoir plus sur le schéma de l'ensemble de données, consultez le fichier NationalReadMe.pdf que vous avez extrait.

    3. Pour voir à quoi ressemblent les données, ouvrez le fichier yob2024.txt. Ce fichier contient des valeurs séparées par une virgule spécifiant le prénom, le genre attribué à la naissance et le 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 yob2024.txt, puis cliquez sur Importer.

      • Si vous utilisez un shell local, copiez ou déplacez le fichier yob2024.txt dans le répertoire dans lequel vous exécutez l'outil bq.

    Créer un ensemble de données

    1. Saisissez la commande suivante pour créer un ensemble de données nommé babynames :

      bq mk --dataset babynames
      

      Le résultat ressemble à ce qui suit :

      Dataset 'babynames' successfully created.
      
    2. Vérifiez que l'ensemble de données babynames apparaît désormais dans votre projet :

      bq ls --datasets=true
      

      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 yob2024.txt dans une nouvelle table nommée names2024 :

      bq load babynames.names2024 yob2024.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
      
    2. Vérifiez que la table names2024 apparaît désormais dans l'ensemble de données babynames :

      bq ls --format=pretty babynames
      

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

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

      bq show babynames.names2024
      

      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                    31904       607494
                        |- 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 \
          'SELECT
            name,
            count
          FROM
            babynames.names2024
          WHERE
            assigned_sex_at_birth = "F"
          ORDER BY
            count DESC
          LIMIT 5'
      

      Le résultat ressemble à ce qui suit :

      +-----------+-------+
      |   name    | count |
      +-----------+-------+
      | Olivia    | 14718 |
      | Emma      | 13485 |
      | Amelia    | 12740 |
      | Charlotte | 12552 |
      | Mia       | 12113 |
      +-----------+-------+
      
    2. Déterminez les prénoms de garçons les moins populaires dans les données :

      bq query \
          'SELECT
            name,
            count
          FROM
            babynames.names2024
          WHERE
            assigned_sex_at_birth = "M"
          ORDER BY
            count ASC
          LIMIT 5'
      

      Le résultat ressemble à ce qui suit :

      +---------+-------+
      |  name   | count |
      +---------+-------+
      | Aaran   |     5 |
      | Aadiv   |     5 |
      | Aadarsh |     5 |
      | Aarash  |     5 |
      | Aadrik  |     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 dans cette démonstration soient facturées sur votre compte Cloud de Confiance , procédez comme suit :

    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. Vous n'avez donc pas besoin de le supprimer.

    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. In the Cloud de Confiance console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

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

      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