Tworzenie zapytania do publicznego zbioru danych za pomocą biblioteki klienta BigQuery w Go

Tworzenie zapytania do publicznego zbioru danych za pomocą biblioteki klienta BigQuery w Go

Dowiedz się, jak:

  1. Aktywować Cloud Shell w projekcie Google Cloud
  2. Otworzyć edytor Cloud Shell
  3. Przygotować pliki na potrzeby zapytań
  4. Wysłać zapytanie do publicznego zbioru danych w BigQuery
  5. Wyczyścić dane.

Szacowany czas potrzebny na ukończenie samouczka:

Aby zacząć, kliknij Rozpocznij.

Aktywowanie Cloud Shell w projekcie Google Cloud

  1. Jeśli nie włączysz płatności w projekcie, będziesz automatycznie pracować w trybie piaskownicy BigQuery. Tryb piaskownicy BigQuery pozwala bezpłatnie poznawać BigQuery z ograniczonym zestawem funkcji. Jeśli nie zamierzasz korzystać z projektu poza tym dokumentem, zalecamy korzystanie z trybu piaskownicy BigQuery.

  2. Kliknij Aktywuj Cloud Shell. Pokaż mi

Aby dowiedzieć się, jak otworzyć edytor Cloud Shell, kliknij Dalej.

Otwieranie edytora Cloud Shell

  1. Utwórz w Cloud Shell nowy projekt i plik Go:

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

    To polecenie tworzy projekt Go o nazwie bigquery-go-quickstart oraz plik o nazwie app.go.

  2. Otwórz edytor Cloud Shell:

    cloudshell workspace bigquery-go-quickstart
    

Aby dowiedzieć się, jak przygotować pliki na potrzeby zapytań, kliknij Dalej.

Przygotowywanie plików na potrzeby zapytań

  1. Aby otworzyć terminal w edytorze Cloud Shell, kliknij Otwórz terminal.

  2. Otwórz katalog projektu:

    cd bigquery-go-quickstart
    
  3. Utwórz plik go.mod:

    go mod init quickstart
    

    Dane wyjściowe są podobne do tych:

    go: creating new go.mod: module quickstart
    go: to add module requirements and sums:
            go mod tidy
    
  4. Zainstaluj bibliotekę klienta BigQuery dla języka Go:

    go get cloud.google.com/go/bigquery
    

    Dane wyjściowe są podobne do podanych. Dla ich uproszczenia pominęliśmy kilka wierszy.

    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
    

Aby dowiedzieć się, jak wysłać zapytanie do publicznego zbioru danych w BigQuery, kliknij Dalej.

Wysyłanie zapytania do publicznego zbioru danych w BigQuery

  1. Kliknij Otwórz edytor.

  2. W panelu eksploratora znajdź projekt BIGQUERY-GO-QUICKSTART.

  3. Kliknij plik app.go, aby go otworzyć.

  4. Aby utworzyć zapytanie do zbioru danych bigquery-public-data.stackoverflow, które zwraca 10 najczęściej wyświetlanych stron Stack Overflow oraz liczbę ich wyświetleń, skopiuj do pliku app.go ten kod:

    
    // 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. Kliknij Otwórz terminal.

  6. W terminalu uruchom skrypt app.go. Jeśli pojawi się prośba o autoryzację Cloud Shell i zaakceptowanie warunków, kliknij Autoryzuj.

    go run app.go
    

    Dane wyjściowe będą podobne do tych:

    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
    

Udało Ci się wykonać zapytanie na publicznym zbiorze danych za pomocą biblioteki klienta BigQuery w Go.

Aby uniknąć obciążenia konta opłatami i zapoznać się z kolejnymi krokami, kliknij Dalej.

Dalsze kroki

Zachowaj utworzone zasoby i wykonaj więcej czynności w BigQuery lub wyczyść dane, aby uniknąć opłat.

Do czego jeszcze można wykorzystać BigQuery

Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami, usuń projekt Google Cloud lub zasoby utworzone w tym przewodniku.

Usuwanie projektu

Jeśli do nauki obsługi BigQuery posłużył Ci nowy, specjalnie utworzony projekt, którego już nie potrzebujesz, możesz go usunąć. Pamiętaj, że usunięcie projektu spowoduje usunięcie całej jego zawartości i niestandardowych identyfikatorów projektu.

Usuwanie zasobów

Jeśli użyłeś(-aś) istniejącego projektu, usuń utworzony folder bigquery-go-quickstart:

  1. W Cloud Shell przejdź do katalogu wyżej:

    cd ..
    
  2. Usuń utworzone zasoby:

    rm -R bigquery-go-quickstart
    

    Flaga -R usuwa wszystkie zasoby w danym folderze.