Tutorial BigQuery (generasi ke-2)


Tutorial ini menunjukkan penulisan HTTP Cloud Function yang mengirimkan kueri ke BigQuery.

Tujuan

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Cloud Functions
  • Cloud Build
  • Artifact Registry

Untuk detailnya, lihat Harga Cloud Functions.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API Cloud Functions, Cloud Build, and Artifact Registry.

    Mengaktifkan API

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Aktifkan API Cloud Functions, Cloud Build, and Artifact Registry.

    Mengaktifkan API

  10. Menginstal Google Cloud CLI.
  11. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  12. Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:

    gcloud components update
  13. Menyiapkan lingkungan pengembangan.

    Buka panduan penyiapan Node.js

Menyiapkan aplikasi

  1. Clone repositori aplikasi contoh ke komputer lokal Anda:

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    Anda juga dapat mendownload contoh sebagai file ZIP dan mengekstraknya.

  2. Ubah ke direktori yang memuat kode contoh Cloud Functions:

    cd nodejs-docs-samples/functions/v2/helloBigQuery
  3. Lihat kode contoh: Sampel mengirimkan kueri untuk kata yang terjadi setidaknya 400 kali dalam set data yang ditentukan, dan menampilkan hasilnya.

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    
    const functions = require('@google-cloud/functions-framework');
    
    /**
     * HTTP Cloud Function that returns BigQuery query results
     *
     * @param {Object} req Cloud Function request context.
     * @param {Object} res Cloud Function response context.
     */
    functions.http('helloBigQuery', async (req, res) => {
      // Define the SQL query
      // Queries the public Shakespeare dataset using named query parameter
      const sqlQuery = `
          SELECT word, word_count
                FROM \`bigquery-public-data.samples.shakespeare\`
                WHERE corpus = @corpus
                AND word_count >= @min_word_count
                ORDER BY word_count DESC`;
    
      const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
        params: {corpus: 'romeoandjuliet', min_word_count: 400},
      };
    
      // Execute the query
      try {
        const [rows] = await bigquery.query(options);
        // Send the results
        res.status(200).send(rows);
      } catch (err) {
        console.error(err);
        res.status(500).send(`Error querying BigQuery: ${err}`);
      }
    });

Men-deploy fungsi

Untuk men-deploy fungsi dengan pemicu HTTP, jalankan perintah berikut di direktori yang berisi kode contoh:

gcloud functions deploy nodejs-bq-function \
--gen2 \
--runtime=nodejs20  \
--region=REGION \
--source=. \
--entry-point=helloBigQuery \
--trigger-http \
--allow-unauthenticated

Anda dapat menggunakan nilai berikut untuk flag --runtime guna menentukan versi Node.js pilihan Anda:

  • nodejs18 (direkomendasikan)
  • nodejs16
  • nodejs14
  • nodejs12
  • nodejs10

Flag --allow-unauthenticated memungkinkan Anda menjangkau fungsi tanpa autentikasi. Untuk mewajibkan autentikasi, hilangkan flag.

Memicu fungsi

  1. Setelah fungsi selesai di-deploy, catat properti uri atau temukan menggunakan perintah berikut:

    gcloud functions describe nodejs-bq-function --gen2 --region=REGION --format="value(serviceConfig.uri)"
  2. Kunjungi URI ini di browser Anda. Anda akan melihat daftar kata yang cocok dengan kriteria kueri, dan berapa kali setiap kata muncul di set data target.

Pembersihan

Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus Cloud Function

Menghapus Cloud Functions tidak akan menghapus resource apa pun yang tersimpan di Cloud Storage.

Untuk menghapus Cloud Function yang Anda buat dalam tutorial ini, jalankan perintah berikut:

gcloud functions delete nodejs-bq-function --gen2 --region REGION

Anda juga dapat menghapus Cloud Functions dari Konsol Google Cloud.