Öffentliches Dataset mit der Go-Clientbibliothek von BigQuery abfragen

Öffentliches Dataset mit der Go-Clientbibliothek von BigQuery abfragen

Sie erfahren, wie Sie:

  1. Cloud Shell in einem Google Cloud Projekt aktivieren
  2. Den Cloud Shell-Editor öffnen
  3. Dateien 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 Go-Projekt und eine zugehörige Datei:

    mkdir bigquery-go-quickstart \
        && touch \
        bigquery-go-quickstart/app.go
    

    Durch diesen Befehl wird ein Go-Projekt mit dem Namen bigquery-go-quickstart und eine Datei mit dem Namen app.go erstellt.

  2. Öffnen Sie den Cloud Shell-Editor:

    cloudshell workspace bigquery-go-quickstart
    

Klicken Sie auf Weiter, um zu erfahren, wie Sie Dateien für Abfragen vorbereiten.

Dateien für Abfragen vorbereiten

  1. Klicken Sie zum Öffnen eines Terminals im Cloud Shell-Editor auf Terminal öffnen.

  2. Öffnen Sie das Projektverzeichnis:

    cd bigquery-go-quickstart
    
  3. Erstellen Sie eine go.mod-Datei:

    go mod init quickstart
    

    Die Ausgabe sieht etwa so aus:

    go: creating new go.mod: module quickstart
    go: to add module requirements and sums:
            go mod tidy
    
  4. Installieren Sie die BigQuery-Clientbibliothek für Go:

    go get cloud.google.com/go/bigquery
    

    Die Ausgabe sieht etwa folgendermaßen aus. Einige Zeilen werden ausgelassen, um die Ausgabe zu vereinfachen.

    go: downloading cloud.google.com/go/bigquery v1.49.0
    go: downloading cloud.google.com/go v0.110.0
    ...
    go: added cloud.google.com/go/bigquery v1.49.0
    go: added cloud.google.com/go v0.110.0
    

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

Öffentliches Dataset in BigQuery abfragen

  1. Klicken Sie auf Editor öffnen.

  2. Suchen Sie im Bereich Explorer das Projekt BIGQUERY-GO-QUICKSTART.

  3. Klicken Sie auf die Datei app.go, um sie zu öffnen.

  4. Wenn Sie eine Abfrage für das Dataset bigquery-public-data.stackoverflow erstellen möchten, die die zehn am häufigsten aufgerufenen Stack Overflow-Seiten und deren Aufrufzahlen zurückgibt, kopieren Sie den folgenden Code in die Datei app.go:

    
    // Command simpleapp queries the Stack Overflow public dataset in Google BigQuery.
    package main
    
    import (
    	"context"
    	"fmt"
    	"io"
    	"log"
    	"os"
    
    	"cloud.google.com/go/bigquery"
    	"google.golang.org/api/iterator"
    )
    
    
    func main() {
    	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
    	if projectID == "" {
    		fmt.Println("GOOGLE_CLOUD_PROJECT environment variable must be set.")
    		os.Exit(1)
    	}
    
    	ctx := context.Background()
    
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		log.Fatalf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	rows, err := query(ctx, client)
    	if err != nil {
    		log.Fatal(err)
    	}
    	if err := printResults(os.Stdout, rows); err != nil {
    		log.Fatal(err)
    	}
    }
    
    // query returns a row iterator suitable for reading query results.
    func query(ctx context.Context, client *bigquery.Client) (*bigquery.RowIterator, error) {
    
    	query := client.Query(
    		`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;`)
    	return query.Read(ctx)
    }
    
    type StackOverflowRow struct {
    	URL       string `bigquery:"url"`
    	ViewCount int64  `bigquery:"view_count"`
    }
    
    // printResults prints results from a query to the Stack Overflow public dataset.
    func printResults(w io.Writer, iter *bigquery.RowIterator) error {
    	for {
    		var row StackOverflowRow
    		err := iter.Next(&row)
    		if err == iterator.Done {
    			return nil
    		}
    		if err != nil {
    			return fmt.Errorf("error iterating through results: %w", err)
    		}
    
    		fmt.Fprintf(w, "url: %s views: %d\n", row.URL, row.ViewCount)
    	}
    }
    

  5. Klicken Sie auf Terminal öffnen.

  6. Führen Sie im Terminal das Skript app.go aus. Wenn Sie zur Autorisierung von Cloud Shell aufgefordert werden und den Bedingungen zustimmen, klicken Sie auf Autorisieren.

    go run app.go
    

    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 Go-Clientbibliothek von BigQuery abgefragt.

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

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-go-quickstart:

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

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

    rm -R bigquery-go-quickstart
    

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