Interroger un ensemble de données public avec la bibliothèque cliente BigQuery pour Java

Bibliothèque cliente BigQuery Java : interroger des données publiques

Découvrez comment :

  1. Activer Cloud Shell dans un projet Google Cloud
  2. Ouvrir l'éditeur Cloud Shell
  3. Préparer les dépendances pour les requêtes
  4. Interroger un ensemble de données public dans BigQuery
  5. effectuer un nettoyage.

Durée estimée :

Pour commencer, cliquez sur Démarrer.

Activer Cloud Shell dans un projet Google Cloud

  1. Si vous n'activez pas la facturation pour un projet, vous travaillez automatiquement dans le bac à sable BigQuery. Ce bac à sable vous permet d'apprendre à utiliser BigQuery avec un ensemble limité de fonctionnalités sans frais. Si vous ne prévoyez pas d'utiliser votre projet au-delà de ce document, nous vous recommandons d'utiliser le bac à sable BigQuery.

  2. Cliquez sur Activer Cloud Shell . Démonstration

Pour découvrir comment ouvrir l'éditeur Cloud Shell, cliquez sur Suivant.

Ouvrir l'éditeur Cloud Shell

  1. Dans Cloud Shell, créez un projet Java à l'aide d'Apache Maven :

    mvn archetype:generate \
        -DgroupId=com.google.app \
        -DartifactId=bigquery-java-quickstart \
        -DinteractiveMode=false
    

    Cette commande crée un projet Maven nommé bigquery-java-quickstart.

    Le résultat renvoyé ressemble à ceci : Plusieurs lignes sont omises pour simplifier le résultat.

    [INFO] Scanning for projects...
    ...
    [INFO] Building Maven Stub Project (No POM) 1
    ...
    [INFO] BUILD SUCCESS
    ...
    

    Outre Maven, vous pouvez aussi utiliser de nombreux autres systèmes de gestion des dépendances. Pour en savoir plus, découvrez comment configurer un environnement de développement Java à utiliser avec les bibliothèques clientes.

  2. Renommez le fichier App.java que Maven a créé par défaut :

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. Ouvrez l'éditeur Cloud Shell :

    cloudshell workspace bigquery-java-quickstart
    
  4. Si vous êtes invité à synchroniser la configuration ou le chemin d'accès aux classes Java, cliquez sur Toujours.

    Si vous n'y êtes pas invité et que vous rencontrez une erreur liée au chemin d'accès aux classes lors de ce tutoriel, procédez comme suit :

    1. Cliquez sur Fichier > Préférences > Ouvrir les paramètres (interface utilisateur).
    2. Cliquez sur Extensions > Java.
    3. Faites défiler la page jusqu'à Configuration : mettre à jour la configuration de compilation, puis sélectionnez Automatique.

Pour apprendre à préparer les dépendances pour les requêtes, cliquez sur Suivant.

Préparer les dépendances pour les requêtes

  1. Dans le volet Explorateur, localisez votre projet BIGQUERY-JAVA-QUICKSTART.

  2. Cliquez sur le fichier pom.xml pour l'ouvrir.

  3. Dans la balise <dependencies>, ajoutez la dépendance suivante après celles pouvant déjà y figurer. Ne remplacez aucune dépendance existante.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. Sur la ligne qui suit le tag de fermeture (</dependencies>), ajoutez le code suivant :

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.1.5</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

Pour apprendre à interroger un ensemble de données public dans BigQuery, cliquez sur Suivant.

Interroger un ensemble de données public dans BigQuery

  1. Dans le volet Explorateur, dans votre projet BIGQUERY-JAVA-QUICKSTART, cliquez sur src > main/java/com/google/app > SimpleApp.java. Le fichier s'ouvre.

  2. Pour créer une requête sur l'ensemble de données bigquery-public-data.stackoverflow, conservez la première ligne du fichier (package com.google.app;) et remplacez le reste de son contenu par le code suivant :

    
    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.FieldValueList;
    import com.google.cloud.bigquery.Job;
    import com.google.cloud.bigquery.JobId;
    import com.google.cloud.bigquery.JobInfo;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    
    public class SimpleApp {
    
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the app.
        String projectId = "MY_PROJECT_ID";
        simpleApp(projectId);
      }
    
      public static void simpleApp(String projectId) {
        try {
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(
                      "SELECT CONCAT('https://stackoverflow.com/questions/', "
                          + "CAST(id as STRING)) as url, view_count "
                          + "FROM `bigquery-public-data.stackoverflow.posts_questions` "
                          + "WHERE tags like '%google-bigquery%' "
                          + "ORDER BY view_count DESC "
                          + "LIMIT 10")
                  // Use standard SQL syntax for queries.
                  // See: https://cloud.google.com/bigquery/sql-reference/
                  .setUseLegacySql(false)
                  .build();
    
          JobId jobId = JobId.newBuilder().setProject(projectId).build();
          Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
    
          // Wait for the query to complete.
          queryJob = queryJob.waitFor();
    
          // Check for errors
          if (queryJob == null) {
            throw new RuntimeException("Job no longer exists");
          } else if (queryJob.getStatus().getExecutionErrors() != null
              && queryJob.getStatus().getExecutionErrors().size() > 0) {
            // TODO(developer): Handle errors here. An error here do not necessarily mean that the job
            // has completed or was unsuccessful.
            // For more details: https://cloud.google.com/bigquery/troubleshooting-errors
            throw new RuntimeException("An unhandled error has occurred");
          }
    
          // Get the results.
          TableResult result = queryJob.getQueryResults();
    
          // Print all pages of the results.
          for (FieldValueList row : result.iterateAll()) {
            // String type
            String url = row.get("url").getStringValue();
            String viewCount = row.get("view_count").getStringValue();
            System.out.printf("%s : %s views\n", url, viewCount);
          }
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Simple App failed due to error: \n" + e.toString());
        }
      }
    }

    La requête renvoie les 10 pages Stack Overflow les plus consultées et leur nombre de vues.

  3. Effectuez un clic droit sur SimpleApp.java, puis cliquez sur Exécuter Java. Si vous êtes invité à autoriser Cloud Shell et à accepter les conditions, cliquez sur Autoriser.

    Le résultat ressemble à ce qui suit :

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

Vous venez d'interroger un ensemble de données public avec la bibliothèque cliente BigQuery pour Java.

Pour éviter que des frais ne soient facturés sur votre compte et pour découvrir les étapes suivantes, cliquez sur Suivant.

Étapes suivantes

Conservez les ressources que vous avez créées et exploitez tout le potentiel de BigQuery, ou effectuez un nettoyage pour éviter que des frais ne vous soient facturés.

Exploiter tout le potentiel de BigQuery

Effectuer un nettoyage

Pour éviter que des frais ne soient facturés sur votre compte Google Cloud , supprimez votre projet Google Cloud ou les ressources que vous avez créées dans ce tutoriel.

Supprimer le projet

Si vous avez créé un projet pour apprendre à utiliser BigQuery et que vous n'en avez plus besoin, supprimez-le. Sachez que la suppression d'un projet entraîne la suppression de tout son contenu, y compris des ID de projets personnalisés.

Supprimer les ressources

Si vous avez utilisé un projet existant, supprimez le dossier bigquery-java-quickstart que vous avez créé :

  1. Dans Cloud Shell, remontez dans le répertoire parent de celui actuellement sélectionné :

    cd ..
    
  2. Supprimez les ressources que vous avez créées :

    rm -R bigquery-java-quickstart
    

    Le flag -R supprime tous les éléments d'un dossier.