Esegui una query su un set di dati pubblico con la libreria client Java di BigQuery

Esegui una query su un set di dati pubblico con la libreria client Java di BigQuery

Scopri come:

  1. Attivare Cloud Shell in un progetto Google Cloud .
  2. Aprire l'editor di Cloud Shell.
  3. Preparare le dipendenze per le query.
  4. Eseguire una query su un set di dati pubblico in BigQuery.
  5. Eseguire la pulizia.

Tempo stimato per il completamento:

Fai clic su Avvia per iniziare.

Attiva Cloud Shell in un progetto Google Cloud

  1. Se non abiliti la fatturazione per un progetto, utilizzi automaticamente la sandbox di BigQuery. La sandbox di BigQuery ti consente di scoprire BigQuery con un set limitato di funzionalità BigQuery senza costi aggiuntivi. Se non prevedi di utilizzare il progetto in altri contesti, ti consigliamo di utilizzare la sandbox di BigQuery.

  2. Fai clic su Attiva Cloud Shell. Procedura

Per scoprire come aprire l'editor di Cloud Shell, fai clic su Avanti.

Apri l'editor di Cloud Shell

  1. In Cloud Shell, crea un nuovo progetto Java utilizzando Apache Maven:

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

    Questo comando crea un progetto Maven denominato bigquery-java-quickstart.

    L'output è simile al seguente. Non sono visualizzate varie righe per semplificare l'output.

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

    Esistono diversi sistemi di gestione delle dipendenze che puoi utilizzare oltre a Maven. Per ulteriori informazioni, scopri come configurare un ambiente di sviluppo Java da utilizzare con le librerie client.

  2. Rinomina il file App.java creato da Maven per impostazione predefinita:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. Apri l'editor di Cloud Shell:

    cloudshell workspace bigquery-java-quickstart
    
  4. Se ti viene chiesto se sincronizzare il classpath o la configurazione Java, fai clic su Always (Sempre).

    Se non ti viene richiesto e riscontri un errore relativo al classpath durante questa procedura dettagliata:

    1. Fai clic su File > Preferences (Preferenze) > Open Settings (UI) (Apri Impostazioni [UI]).
    2. Fai clic su Extensions (Estensioni) > Java.
    3. Scorri fino a Configuration: Update Build Configuration (Configurazione: Aggiorna configurazione di compilazione) e seleziona automatic (automatico).

Per scoprire come preparare le dipendenze per le query, fai clic su Avanti.

Prepara le dipendenze per le query

  1. Nel riquadro Explorer, individua il progetto BIGQUERY-JAVA-QUICKSTART.

  2. Fai clic sul file pom.xml per aprirlo.

  3. All'interno del tag <dependencies>, aggiungi la seguente dipendenza dopo quelle esistenti. Non sostituire nessuna dipendenza esistente.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. Nella riga dopo il tag di chiusura (</dependencies>), aggiungi quanto segue:

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

Per scoprire come eseguire query su un set di dati pubblico in BigQuery, fai clic su Avanti.

Esegui una query su un set di dati pubblico in BigQuery

  1. Nel riquadro Explorer del tuo progetto BIGQUERY-JAVA-QUICKSTART, fai clic su src> main/java/com/google/app > SimpleApp.java. Viene aperto il file.

  2. Per creare una query sul set di dati bigquery-public-data.stackoverflow, lascia la prima riga del file (package com.google.app;) e sostituisci i contenuti rimanenti del file con il seguente codice:

    
    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 query restituisce le 10 pagine di Stack Overflow più visualizzate e il rispettivo numero di visualizzazioni.

  3. Fai clic con il tasto destro del mouse su SimpleApp.java e poi su Esegui Java. Se ti viene chiesto di autorizzare Cloud Shell e di accettare i termini, fai clic su Autorizza.

    Il risultato è simile al seguente:

    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
    

Hai eseguito una query su un set di dati pubblico con la libreria client Java di BigQuery.

Per evitare che al tuo account vengano addebitati costi e per ottenere informazioni sui passaggi successivi, fai clic su Avanti.

Passaggi successivi

Conserva le risorse che hai creato e ottieni il massimo da BigQuery oppure esegui la pulizia per evitare addebiti.

Ottieni il massimo da BigQuery

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi, elimina il progetto Google Cloud o le risorse che hai creato in questa procedura dettagliata.

Elimina il progetto

Se hai creato un nuovo progetto per prendere dimestichezza con BigQuery, ma non ne hai più bisogno, eliminalo. Tieni presente che l'eliminazione di un progetto comporta l'eliminazione di tutti i dati del progetto e gli ID progetto personalizzati andranno persi.

Elimina le risorse

Se hai utilizzato un progetto esistente, elimina la cartella bigquery-java-quickstart che hai creato:

  1. In Cloud Shell, sali di un livello nella directory:

    cd ..
    
  2. Elimina le risorse che hai creato:

    rm -R bigquery-java-quickstart
    

    Il flag -R elimina tutti gli asset in una cartella.