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 serez familiarisé avec bq et saurez 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.


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 sans frais pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  6. Activez l'API BigQuery.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer l'API

    Pour les nouveaux projets, l'API BigQuery est automatiquement activée.

  7. 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. Pour en savoir plus, consultez la page Activer le bac à sable BigQuery.
  8. Dans la console Google Cloud , activez Cloud Shell.

    Activer Cloud Shell

    En bas 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.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer un ensemble de données, créer une table, charger des données et interroger des données, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

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. Si vous avez lancé Cloud Shell à partir de la documentation, saisissez la commande suivante pour définir l'ID de votre projet. Cela vous évite de devoir spécifier l'ID du projet dans chaque commande CLI.

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet.

  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 Google Cloud , supprimez le projet Google Cloud qui les contient.

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