Rumah >pembangunan bahagian belakang >Golang >Menggunakan BigQuery dalam Go: Panduan Lengkap

Menggunakan BigQuery dalam Go: Panduan Lengkap

PHPz
PHPzasal
2023-06-18 08:12:101886semak imbas

Menggunakan BigQuery dalam Go: Panduan Lengkap

BigQuery ialah gudang data awan yang berkuasa dan alat analisis daripada Google Cloud. Ia telah dipercayai dan digunakan oleh banyak syarikat dan perusahaan dari segi analisis data besar dan pergudangan data. Dalam artikel ini, kami akan meneroka cara menggunakan BigQuery dalam bahasa Go.

Pertama, anda perlu memasang SDK Awan Google. Di Linux, anda boleh memasangnya dengan arahan berikut:

$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk

Pada Windows dan macOS, anda boleh memuat turun pemasang dengan pergi ke halaman muat turun SDK Awan Google. Selepas pemasangan, gunakan alat baris arahan gcloud untuk pengesahan dan konfigurasi.

Seterusnya, anda perlu memasang pustaka klien BigQuery Go. Anda boleh memasangnya dengan arahan berikut:

$ go get -u cloud.google.com/go/bigquery

Seterusnya, anda perlu mencipta projek Google Cloud dan mendayakan API BigQuery. Buka projek dalam Google Cloud Console, klik "API dan Perkhidmatan" dalam bar menu kiri, cari "API BigQuery" dalam kotak carian dan dayakannya.

Sekarang, mari lihat cara menyambung ke BigQuery dan menjalankan pertanyaan dalam Go. Harap maklum bahawa ini memerlukan kebenaran baca pada jadual atau paparan BigQuery.

import (
    "fmt"
    "context"
    "cloud.google.com/go/bigquery"
    "google.golang.org/api/iterator"
)

func main() {
    ctx := context.Background()

    client, err := bigquery.NewClient(ctx, "project-id")
    if err != nil {
        // Handle error.
    }
    defer client.Close()

    q := client.Query("SELECT field1, field2 FROM `dataset.table` LIMIT 10")
    it, err := q.Read(ctx)
    if err != nil {
        // Handle error.
    }
    for {
        var values []bigquery.Value
        err := it.Next(&values)
        if err == iterator.Done {
            break
        }
        if err != nil {
            // Handle error.
        }
        fmt.Println(values[0], values[1])
    }
}

Dalam kod sampel di atas, kami menggunakan fungsi bigquery.NewClient() untuk mencipta objek klien. Kami menggunakan pertukaran silang untuk memastikan penutupan.

Kami menggunakan fungsi bigquery.Query() untuk mencipta objek Query dan menentukan nama jadual. Kami juga menetapkan klausa LIMIT untuk mengehadkan keputusan kepada 10 rekod. Sila ambil perhatian bahawa nama jadual mesti dinyatakan dalam bentuk dataset.table dan set data serta jadual mesti wujud terlebih dahulu.

Seterusnya, kami menjalankan pertanyaan menggunakan fungsi query.Read(). Fungsi Read() mengembalikan objek iterator yang boleh kita ulangi seperti kepingan Go standard untuk membaca hasilnya.

Akhir sekali, kami menggunakan nilai[0] dan nilai[1] dalam gelung untuk mengakses medan pertama dan kedua hasil pertanyaan.

Dalam aplikasi praktikal, anda mungkin ingin membuat pertanyaan yang lebih kompleks dan mengakses lebih banyak hasil pertanyaan. Nasib baik, pustaka klien BigQuery Go menyediakan pelbagai pilihan dan API untuk membantu anda menyelesaikan tugasan ini dengan mudah.

Ringkasan

Dalam artikel ini, kami membincangkan cara menggunakan BigQuery dalam bahasa Go. Kami memperincikan proses memasang pustaka klien Google Cloud SDK dan BigQuery Go serta menyediakan kod sampel untuk menyambung ke BigQuery dan menjalankan pertanyaan.

Jika anda menghadapi masalah mengendalikan analisis data besar atau tugas pergudangan data, sila rujuk dokumentasi Google Cloud atau tanya soalan tentang Stack Overflow. Komuniti Google Cloud sentiasa ada untuk menyokong anda.

Atas ialah kandungan terperinci Menggunakan BigQuery dalam Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn