Menjalankan kueri gabungan dengan Data Boost

Halaman ini menjelaskan cara menggunakan Spanner Data Boost saat Anda menjalankan kueri gabungan dari BigQuery ke database Spanner. Dengan Data Boost, kueri gabungan berjalan dengan dampak minimal terhadap workload yang ada di instance Spanner yang disediakan. Kueri Data Boost dari BigQuery ke database Spanner dapat menggabungkan data BigQuery dengan data Spanner.

Anda dapat menjalankan kueri gabungan dari BigQuery ke Spanner menggunakan Data Boost dengan salah satu metode berikut:

Gabungan Spanner memungkinkan BigQuery membuat kueri data yang ada di Spanner secara real time, tanpa menyalin atau memindahkan data. Untuk mempelajari kueri gabungan Spanner lebih lanjut, lihat Kueri gabungan Spanner. Untuk mempelajari Data Boost, lihat Ringkasan Data Boost.

Sebelum memulai

Sebelum dapat menjalankan kueri gabungan dengan Data Boost, Anda harus menyelesaikan tugas berikut:

Membuat instance dan database Spanner

Jika Anda tidak memiliki instance dan database Spanner, ikuti langkah-langkah di Membuat dan mengkueri database menggunakan Google Cloud konsol untuk membuatnya.

Mengaktifkan BigQuery Connection API

BigQuery Connection API memungkinkan Anda mengelola koneksi BigQuery ke sumber data eksternal seperti database Spanner.

  • Enable the BigQuery connection API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Untuk mengetahui informasi selengkapnya, lihat BigQuery Connection API dalam dokumentasi BigQuery.

Memberikan izin IAM untuk Peningkatan Data kepada akun utama

Principal harus diberi izin berikut untuk menjalankan kueri gabungan dengan Data Boost:

  • spanner.instances.get - memungkinkan Anda mendapatkan konfigurasi instance.
  • spanner.databases.useDataBoost - memungkinkan Anda menggunakan resource komputasi Spanner Data Boost untuk memproses kueri yang dipartisi.

Untuk mengetahui informasi selengkapnya tentang izin Spanner, lihat Izin Identity and Access Management (IAM).

Untuk memberikan izin yang diperlukan ini, sebaiknya gunakan peran IAM Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Anda dapat menambahkan peran tersebut ke akun utama mana pun yang perlu menjalankan kueri gabungan dengan Data Boost. Untuk mempelajari lebih lanjut peran bawaan di Spanner, lihat Peran bawaan. Untuk mempelajari cara membuat peran IAM kustom, lihat Membuat peran kustom.

Menjalankan kueri gabungan Data Boost

Untuk menjalankan kueri Peningkatan Data dari BigQuery ke sumber eksternal, Anda memerlukan koneksi BigQuery ke sumber eksternal dan ID koneksi. Saat Anda menjalankan kueri gabungan Spanner dengan Data Boost, sumber eksternalnya adalah database Spanner. Setelah Anda membuat ID koneksi, ID tersebut akan digunakan oleh BigQuery untuk menjalankan kueri Data Boost pada database Spanner.

Gunakan salah satu opsi berikut untuk membuat ID koneksi BigQuery, lalu gunakan ID koneksi untuk menjalankan kueri Peningkatan Data dari BigQuery:

  1. Mulai di Spanner - Buat ID koneksi eksternal BigQuery di konsol Spanner. Setelah ID koneksi dibuat di konsol Spanner, Anda akan dialihkan ke konsol BigQuery untuk menjalankan kueri gabungan Data Boost ke database Spanner.

  2. Mulai di BigQuery - Buat ID koneksi eksternal Peningkatan Data di konsol BigQuery atau menggunakan alat command line bq. Setelah membuat ID koneksi, Anda tetap berada di konsol BigQuery untuk menjalankan kueri gabungan Data Boost ke database Spanner.

Mulai di Spanner untuk menjalankan kueri Data Boost

Untuk menjalankan kueri Data Boost gabungan yang dimulai di Spanner Studio, lakukan hal berikut:

  1. Buka halaman Instances Spanner di konsolGoogle Cloud .

    Buka halaman Instances

    Konsol menampilkan daftar instance Spanner Anda.

  2. Pilih instance Spanner, lalu pilih database.

  3. Di halaman Database overview, di menu navigasi, klik Spanner Studio.

  4. Klik Lihat di BigQuery.

  5. Di dialog Lihat di BigQuery, masukkan ID koneksi.

    ID koneksi digunakan untuk membuat koneksi eksternal BigQuery baru ke database Spanner Anda. Anda mereferensikan koneksi eksternal menggunakan pola berikut:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Error akan terjadi jika ID sudah ada.

  6. Isi sisa dialog dan lakukan hal berikut:

    • Pilih Read data in parallel.
    • Pilih Gunakan Spanner Data Boost.
  7. Klik Lihat di BigQuery.

    BigQuery Studio akan terbuka dengan kueri berikut:

    SELECT * FROM EXTERNAL_QUERY("PROJECT-ID.LOCATION.CONNECTION-ID", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
    

    Anda dapat menggantinya dengan kueri gabungan Anda. Misalnya, Anda dapat membuat kueri yang mirip dengan contoh berikut. Contoh ini membuat kueri gabungan dari tabel bernama orders di database Spanner dan menggabungkan hasilnya dengan tabel BigQuery bernama mydataset.customers.

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

Mulai di BigQuery untuk menjalankan kueri Data Boost

Untuk membuat koneksi data eksternal dari BigQuery ke database Spanner dan menggunakan koneksi tersebut untuk menjalankan kueri Data Boost gabungan dari BigQuery, pilih salah satu opsi berikut:

Konsol

  1. Buka Membuat koneksi Spanner di dokumentasi BigQuery dan ikuti petunjuk di tab Console.

  2. Di panel External data source, lakukan hal berikut:

    • Pilih Read data in parallel.
    • Pilih Gunakan Spanner Data Boost.

bq

  1. Buka Membuat koneksi Spanner dalam dokumentasi BigQuery dan ikuti petunjuk di tab bq*.

  2. Tetapkan properti koneksi berikut ke true:

    • useParallelism
    • useDataBoost

Contoh berikut menggunakan perintah bq mk untuk membuat koneksi baru bernama my_connection dengan dua properti yang diperlukan untuk Data Boost:

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

Menggunakan Data Boost dengan set data eksternal

Untuk menjalankan kueri Data Boost dari BigQuery ke Spanner sebagai sumber eksternal, Anda dapat membuat set data eksternal (juga dikenal sebagai set data gabungan) di BigQuery yang ditautkan ke database GoogleSQL atau PostgreSQL yang ada di Spanner.

Menggunakan koneksi CLOUD_RESOURCE

Secara default, set data eksternal Spanner menggunakan kredensial pengguna akhir (EUC), yang mengharuskan pengguna memiliki akses langsung ke database Spanner mereka. Pengguna dapat membuat kueri set data ini jika mereka memiliki akses yang diberikan di Spanner.

Secara opsional, set data eksternal Spanner dapat menggunakan koneksi CLOUD_RESOURCE untuk berinteraksi dengan database Spanner Anda, sehingga Anda dapat memberikan akses pengguna ke data Spanner melalui BigQuery, tanpa memberikan akses langsung ke database Spanner. Karena akun layanan dari koneksi CLOUD_RESOURCE menangani pengambilan data dari Spanner, Anda hanya perlu memberi pengguna akses ke set data eksternal Spanner. Delegasi akses ini memisahkan akses ke tabel Spanner dari set data eksternal dan akses langsung ke tabel Spanner pokok. Koneksi resource Cloud yang terkait dengan akun layanan digunakan untuk terhubung ke Spanner. Pengguna dapat membuat kueri tabel Spanner ini dari set data eksternal meskipun mereka tidak memiliki akses yang diberikan di Spanner.

Sebelum membuat set data eksternal Spanner dengan koneksi CLOUD_RESOURCE, lakukan hal berikut:

Membuat koneksi

Anda dapat membuat atau menggunakan koneksi CLOUD_RESOURCE yang ada untuk terhubung ke Spanner. Pastikan untuk membuat koneksi di lokasi yang sama dengan lokasi tempat Anda berencana membuat set data eksternal Spanner.

Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

    Jika Anda tidak melihat panel kiri, klik Luaskan panel kiri untuk membuka panel.

  3. Di panel Explorer, luaskan nama project Anda, lalu klik Connections.

  4. Di halaman Koneksi, klik Buat koneksi.

  5. Untuk Connection type, pilih Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).

  6. Di kolom Connection ID, masukkan nama untuk koneksi Anda.

  7. Untuk Location type, pilih lokasi untuk koneksi Anda. Koneksi harus ditempatkan bersama resource Anda yang lain seperti set data.

  8. Klik Create connection.

  9. Klik Go to connection.

  10. Di panel Connection info, salin ID akun layanan untuk digunakan pada langkah berikutnya.

bq

  1. Di lingkungan command line, buat koneksi:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    Parameter --project_id akan mengganti project default.

    Ganti kode berikut:

    • REGION: region koneksi Anda
    • PROJECT_ID: Project ID Google Cloud Anda
    • CONNECTION_ID: ID untuk koneksi Anda

    Saat Anda membuat resource koneksi, BigQuery akan membuat akun layanan sistem unik dan mengaitkannya dengan koneksi.

    Pemecahan masalah: Jika Anda mendapatkan error koneksi berikut, update Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Ambil dan salin ID akun layanan untuk digunakan pada langkah berikutnya:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    Outputnya mirip dengan hal berikut ini:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat Library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import google.api_core.exceptions
from google.cloud import bigquery_connection_v1

client = bigquery_connection_v1.ConnectionServiceClient()


def create_connection(
    project_id: str,
    location: str,
    connection_id: str,
):
    """Creates a BigQuery connection to a Cloud Resource.

    Cloud Resource connection creates a service account which can then be
    granted access to other Google Cloud resources for federated queries.

    Args:
        project_id: The Google Cloud project ID.
        location: The location of the connection (for example, "us-central1").
        connection_id: The ID of the connection to create.
    """

    parent = client.common_location_path(project_id, location)

    connection = bigquery_connection_v1.Connection(
        friendly_name="Example Connection",
        description="A sample connection for a Cloud Resource.",
        cloud_resource=bigquery_connection_v1.CloudResourceProperties(),
    )

    try:
        created_connection = client.create_connection(
            parent=parent, connection_id=connection_id, connection=connection
        )
        print(f"Successfully created connection: {created_connection.name}")
        print(f"Friendly name: {created_connection.friendly_name}")
        print(
            f"Service Account: {created_connection.cloud_resource.service_account_id}"
        )

    except google.api_core.exceptions.AlreadyExists:
        print(f"Connection with ID '{connection_id}' already exists.")
        print("Please use a different connection ID.")
    except Exception as e:
        print(f"An unexpected error occurred while creating the connection: {e}")

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat Library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const {ConnectionServiceClient} =
  require('@google-cloud/bigquery-connection').v1;
const {status} = require('@grpc/grpc-js');

const client = new ConnectionServiceClient();

/**
 * Creates a new BigQuery connection to a Cloud Resource.
 *
 * A Cloud Resource connection creates a service account that can be granted access
 * to other Google Cloud resources.
 *
 * @param {string} projectId The Google Cloud project ID. for example, 'example-project-id'
 * @param {string} location The location of the project to create the connection in. for example, 'us-central1'
 * @param {string} connectionId The ID of the connection to create. for example, 'example-connection-id'
 */
async function createConnection(projectId, location, connectionId) {
  const parent = client.locationPath(projectId, location);

  const connection = {
    friendlyName: 'Example Connection',
    description: 'A sample connection for a Cloud Resource',
    // The service account for this cloudResource will be created by the API.
    // Its ID will be available in the response.
    cloudResource: {},
  };

  const request = {
    parent,
    connectionId,
    connection,
  };

  try {
    const [response] = await client.createConnection(request);

    console.log(`Successfully created connection: ${response.name}`);
    console.log(`Friendly name: ${response.friendlyName}`);

    console.log(`Service Account: ${response.cloudResource.serviceAccountId}`);
  } catch (err) {
    if (err.code === status.ALREADY_EXISTS) {
      console.log(`Connection '${connectionId}' already exists.`);
    } else {
      console.error(`Error creating connection: ${err.message}`);
    }
  }
}

Terraform

Gunakan resource google_bigquery_connection.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Contoh berikut membuat koneksi resource Cloud bernama my_cloud_resource_connection di region US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Untuk menerapkan konfigurasi Terraform di project, selesaikan langkah-langkah di bagian berikut. Google Cloud

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka Google Cloud project Anda untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Setelah membuat koneksi, buka koneksi tersebut, lalu di panel Connection info, salin ID akun layanan. Anda memerlukan ID ini saat mengonfigurasi izin untuk koneksi. Saat Anda membuat resource koneksi, BigQuery akan membuat akun layanan sistem unik dan mengaitkannya dengan koneksi.

Menyiapkan akses

Anda harus memberikan akses baca ke akun layanan yang terkait dengan koneksi baru ke instance atau database Spanner Anda. Sebaiknya gunakan peran IAM bawaan Cloud Spanner Database Reader with Data Boost (roles/spanner.databaseReaderWithDataBoost).

Ikuti langkah-langkah berikut untuk memberikan akses ke peran tingkat database untuk akun layanan yang Anda salin sebelumnya dari koneksi:

  1. Buka halaman Instances Spanner.

    Buka halaman instance

  2. Klik nama instance yang berisi database Anda untuk membuka halaman Instance details.

  3. Di tab Overview, centang kotak untuk database Anda.
    Panel Info akan muncul.

  4. Klik Add principal.

  5. Di panel Add principals, di New principals, masukkan ID akun layanan yang Anda salin sebelumnya.

  6. Di kolom Select a role, pilih Cloud Spanner Database Reader with DataBoost role.

  7. Klik Simpan.

Membuat set data eksternal

Untuk membuat set data eksternal, lakukan hal berikut:

Konsol

  1. Buka halaman BigQuery di konsol Google Cloud .

    Buka halaman BigQuery

  2. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

    Jika Anda tidak melihat panel kiri, klik Luaskan panel kiri untuk membuka panel.

  3. Di panel Explorer, pilih project tempat Anda ingin membuat set data.

  4. Klik Lihat tindakan, lalu klik Buat set data.

  5. Di halaman Create dataset, lakukan hal berikut:

    • Untuk Dataset ID, masukkan nama set data yang unik.
    • Untuk Jenis lokasi, pilih lokasi untuk set data, seperti us-central1 atau multiregion us. Setelah Anda membuat set data, lokasi tidak dapat diubah.
    • Untuk Set Data Eksternal, lakukan hal berikut:

      • Centang kotak di samping Tautkan ke set data eksternal.
      • Untuk Jenis set data eksternal, pilih Spanner.
      • Untuk External source, masukkan ID lengkap database Spanner Anda dalam format berikut: projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Misalnya: projects/my_project/instances/my_instance/databases/my_database
      • Atau, untuk Peran database, masukkan nama peran database Spanner. Untuk mengetahui informasi selengkapnya, baca tentang Peran database yang digunakan untuk membuat Koneksi Spanner
      • Secara opsional, centang kotak di samping Gunakan koneksi Resource Cloud untuk membuat set data eksternal dengan koneksi.
    • Biarkan setelan default lainnya seperti apa adanya.

  6. Klik Create dataset.

SQL

Gunakan pernyataan bahasa definisi data (DDL) CREATE EXTERNAL SCHEMA.

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE EXTERNAL SCHEMA DATASET_NAME
      OPTIONS (
        external_source = 'SPANNER_EXTERNAL_SOURCE',
        location = 'LOCATION');
    /*
      Alternatively, create with a connection:
    */
    CREATE EXTERNAL SCHEMA DATASET_NAME
      WITH CONNECTION PROJECT_ID.LOCATION.CONNECTION_NAME
      OPTIONS (
        external_source = 'SPANNER_EXTERNAL_SOURCE',
        location = 'LOCATION');

    Ganti kode berikut:

    • DATASET_NAME: nama set data baru Anda di BigQuery.
    • SPANNER_EXTERNAL_SOURCE: nama database Spanner yang memenuhi syarat dan lengkap, dengan awalan yang mengidentifikasi sumber, dalam format berikut: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Misalnya: google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database atau google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
    • LOCATION: lokasi set data baru Anda di BigQuery, misalnya, us-central1. Setelah membuat set data, Anda tidak dapat mengubah lokasinya.
    • (Opsional)CONNECTION_NAME: nama koneksi resource Cloud Anda.

  3. Klik Run.

Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.

bq

Di lingkungan command line, buat set data eksternal menggunakan perintah bq mk:

bq --location=LOCATION mk --dataset \
    --external_source SPANNER_EXTERNAL_SOURCE \
    DATASET_NAME

Atau, buat dengan koneksi:

bq --location=LOCATION mk --dataset \
    --external_source SPANNER_EXTERNAL_SOURCE \
    --connection_id PROJECT_ID.LOCATION.CONNECTION_NAME \
    DATASET_NAME

Ganti kode berikut:

  • LOCATION: lokasi set data baru Anda di BigQuery—misalnya, us-central1. Setelah membuat set data, Anda tidak dapat mengubah lokasinya. Anda dapat menetapkan nilai lokasi default menggunakan file .bigqueryrc.
  • SPANNER_EXTERNAL_SOURCE: nama database Spanner yang memenuhi syarat dan lengkap, dengan awalan yang mengidentifikasi sumber, dalam format berikut: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Misalnya: google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database atau google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
  • DATASET_NAME: nama set data baru Anda di BigQuery. Untuk membuat set data dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET_NAME.
  • (Opsional)CONNECTION_NAME: nama koneksi resource Cloud Anda.

Terraform

Gunakan resource google_bigquery_dataset.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Contoh berikut membuat set data eksternal Spanner:

resource "google_bigquery_dataset" "default" {
  dataset_id    = "my_external_dataset"
  friendly_name = "My external dataset"
  description   = "This is a test description."
  location      = "US"
  external_dataset_reference {
    # The full identifier of your Spanner database.
    external_source = "google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database"
    # Must be empty for a Spanner external dataset.
    connection = ""
  }
}

Untuk menerapkan konfigurasi Terraform di project, selesaikan langkah-langkah di bagian berikut. Google Cloud

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka Google Cloud project Anda untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

API

Panggil metode datasets.insert dengan resource set data dan kolom externalDatasetReference yang ditentukan untuk database Spanner Anda.

Perhatikan bahwa nama tabel dalam set data eksternal tidak peka huruf besar/kecil.

Saat membuat set data eksternal dengan koneksi CLOUD_RESOURCE, Anda harus memiliki izin bigquery.connections.delegate (tersedia dari peran BigQuery Connection Admin) pada koneksi yang digunakan oleh set data eksternal.

Membuat tampilan terwujud non-inkremental berdasarkan tabel dari set data eksternal

Sebelum melanjutkan, Anda harus membuat set data eksternal Spanner pokok menggunakan koneksi CLOUD_RESOURCE.

Anda dapat membuat tampilan terwujud non-inkremental yang mereferensikan tabel set data eksternal Spanner dengan menggunakan opsi allow_non_incremental_definition. Contoh berikut menggunakan tabel set data eksternal Spanner dasar:

/*
  You must create the spanner_external_dataset with a CLOUD_RESOURCE connection.
*/
CREATE MATERIALIZED VIEW sample_dataset.sample_spanner_mv
  OPTIONS (
      enable_refresh = true, refresh_interval_minutes = 60,
      max_staleness = INTERVAL "24" HOUR,
        allow_non_incremental_definition = true)
AS
  SELECT COUNT(*) cnt FROM spanner_external_dataset.spanner_table;

Hanya tampilan terwujud non-inkremental BigQuery yang dapat memiliki tabel set data eksternal Spanner sebagai tabel dasar. Jika refresh terakhir tampilan terwujud non-inkremental terjadi di luar interval max_staleness, kueri akan membaca tabel set data eksternal Spanner dasar. Pelajari lebih lanjut tampilan terwujud non-inkremental BigQuery.

Langkah berikutnya