Öffentliches Dataset mit der Java-Clientbibliothek von BigQuery abfragen

Öffentliches Dataset mit der Java-Clientbibliothek von BigQuery abfragen

Sie erfahren, wie Sie:

  1. Cloud Shell in einem Google Cloud Projekt aktivieren
  2. Den Cloud Shell-Editor öffnen
  3. Abhängigkeiten für Abfragen vorbereiten
  4. Ein öffentliches Dataset in BigQuery abfragen
  5. Bereinigen

Geschätzte Dauer:

Klicken Sie auf Start, um zu beginnen.

Cloud Shell in einem Google Cloud Projekt aktivieren

  1. Wenn Sie die Abrechnung für ein Projekt nicht aktivieren, arbeiten Sie automatisch in der BigQuery-Sandbox. Mit der BigQuery-Sandbox können Sie BigQuery mit einer begrenzten Anzahl von BigQuery-Features kostenlos nutzen. Wenn Sie nicht vorhaben, Ihr Projekt über dieses Dokument hinaus zu verwenden, empfehlen wir die Verwendung der BigQuery-Sandbox.

  2. Klicken Sie auf Cloud Shell aktivieren. Einblenden

Klicken Sie auf Weiter, um zu erfahren, wie Sie den Cloud Shell-Editor öffnen.

Cloud Shell-Editor öffnen

  1. Erstellen Sie in Cloud Shell ein neues Java-Projekt mit Apache Maven:

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

    Mit diesem Befehl wird ein Maven-Projekt mit dem Namen bigquery-java-quickstart erstellt.

    Die entsprechende Ausgabe sieht etwa so aus: Einige Zeilen werden ausgelassen, um die Ausgabe zu vereinfachen.

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

    Neben Maven stehen viele Managementsysteme für Abhängigkeiten zur Verfügung. Hier finden Sie Informationen zum Einrichten einer Java-Entwicklungsumgebung für die Verwendung mit Clientbibliotheken.

  2. Benennen Sie die von Maven standardmäßig erstellte Datei App.java um:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. Öffnen Sie den Cloud Shell-Editor:

    cloudshell workspace bigquery-java-quickstart
    
  4. Wenn Sie aufgefordert werden, den Java-Klassenpfad oder die Konfiguration zu synchronisieren, klicken Sie auf Immer.

    Wenn Sie während dieser Schritt-für-Schritt-Anleitung nicht dazu aufgefordert werden und ein Fehler im Zusammenhang mit dem Klassenpfad auftritt, gehen Sie so vor:

    1. Klicken Sie auf File > Preferences > Open Settings (UI).
    2. Klicken Sie auf Extensions > Java.
    3. Scrollen Sie zu Konfiguration: Build-Konfiguration aktualisieren und wählen Sie automatisch aus.

Klicken Sie auf Weiter, um zu erfahren, wie Sie Abhängigkeiten für Abfragen vorbereiten.

Abhängigkeiten für Abfragen vorbereiten

  1. Suchen Sie im Bereich Explorer das Projekt BIGQUERY-JAVA-QUICKSTART.

  2. Klicken Sie auf die Datei pom.xml, um sie zu öffnen.

  3. Fügen Sie im Tag <dependencies> die folgende Abhängigkeit nach möglicherweise bereits vorhandenen ein. Ersetzen Sie keine vorhandenen Abhängigkeiten.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. Fügen Sie in der Zeile nach dem schließenden Tag (</dependencies>) Folgendes hinzu:

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

Klicken Sie auf Weiter, um zu erfahren, wie Sie ein öffentliches Dataset in BigQuery abfragen.

Öffentliches Dataset in BigQuery abfragen

  1. Klicken Sie im Bereich Explorer in Ihrem Projekt BIGQUERY-JAVA-QUICKSTART auf src > main/java/com/google/app/ > SimpleApp.java. Die Datei wird geöffnet.

  2. Wenn Sie eine Abfrage für das Dataset bigquery-public-data.stackoverflow erstellen möchten, behalten Sie die erste Zeile der Datei (package com.google.app;) bei und ersetzen Sie den Rest durch den folgenden Code:

    
    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());
        }
      }
    }

    Die Abfrage gibt die zehn am häufigsten aufgerufenen Stack Overflow-Seiten und deren Aufrufzahlen zurück.

  3. Klicken Sie mit der rechten Maustaste auf SimpleApp.java und dann auf Java ausführen. Wenn Sie zur Autorisierung von Cloud Shell aufgefordert werden und den Bedingungen zustimmen, klicken Sie auf Autorisieren.

    Das Ergebnis sieht etwa so aus:

    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
    

Sie haben erfolgreich ein öffentliches Dataset mit der Java-Clientbibliothek von BigQuery abgefragt.

Klicken Sie auf Weiter, um zu verhindern, dass Ihrem Konto Gebühren in Rechnung gestellt werden, und um Informationen zu den nächsten Schritten zu erhalten.

Nächste Schritte

Behalten Sie die von Ihnen erstellten Ressourcen und nutzen Sie sie für weitere Aufgaben mit BigQuery oder bereinigen Sie sie, um Gebühren zu vermeiden.

Mehr Möglichkeiten mit BigQuery

Bereinigen

Damit Ihrem Google Cloud Konto keine Gebühren in Rechnung gestellt werden, sollten Sie entweder Ihr Google Cloud Projekt oder die in dieser Schritt-für-Schritt-Anleitung erstellten Ressourcen löschen.

Projekt löschen

Wenn Sie ein neues Projekt erstellt haben, um mehr über BigQuery zu erfahren, und Sie das Projekt nicht mehr benötigen, löschen Sie es. Beachten Sie, dass beim Löschen eines Projekts alle Inhalte darin gelöscht werden und benutzerdefinierte Projekt-IDs verloren gehen.

Ressourcen löschen

Wenn Sie ein vorhandenes Projekt verwendet haben, löschen Sie den erstellten Ordner bigquery-java-quickstart:

  1. Wechseln Sie in Cloud Shell ein Verzeichnis nach oben:

    cd ..
    
  2. Löschen Sie die erstellten Ressourcen:

    rm -R bigquery-java-quickstart
    

    Mit dem Flag -R werden alle Assets in einem Ordner gelöscht.