Membuat tabel dengan template

Buat tabel menggunakan properti satu tabel (skema, partisi, pengelompokan) untuk membuat tabel kosong baru dengan konfigurasi yang sama.

Contoh kode

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

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

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// createTableFromTemplateTable demonstrates how to use the properties of one
// table (schema, partitioning, clustering) to create a new empty table with
// the same configuration.
func createTableFromTemplateTable(srcProjectID, srcDatasetID, srcTableID, dstProjectID, dstDatasetID, dstTableID string) error {
	// srcProjectID := "bigquery-public-data"
	// srcDatasetID := "samples"
	// srcTableID := "shakespeare"
	// dstProjectID := "my-project-id"
	// dstDatasetID := "mydataset"
	// dstTableID := "mytable"
	ctx := context.Background()

	// We'll construct the client based on the destination project.
	client, err := bigquery.NewClient(ctx, dstProjectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %w", err)
	}
	defer client.Close()

	srcTableRef := client.DatasetInProject(srcProjectID, srcDatasetID).Table(srcTableID)

	srcMeta, err := srcTableRef.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("failed to get source table metadata: %w", err)
	}

	dstTableRef := client.Dataset(dstDatasetID).Table(dstTableID)

	// We'll use some (but not all) of the metadata from the source table
	// to define the destination table.  Other properties to consider include
	// attributes like expiration policy and managed encryption settings.
	dstMeta := &bigquery.TableMetadata{
		Description: fmt.Sprintf("table structure copied from %s.%s.%s",
			srcTableRef.ProjectID, srcTableRef.DatasetID, srcTableRef.TableID),
		Schema:     srcMeta.Schema,
		Clustering: srcMeta.Clustering,
		// A table will only have one partitioning configuration, the others will be empty/nil.
		TimePartitioning:  srcMeta.TimePartitioning,
		RangePartitioning: srcMeta.RangePartitioning,
		// Retain the same enforcement of partition filtering as well.
		RequirePartitionFilter: srcMeta.RequirePartitionFilter,
	}

	if err := dstTableRef.Create(ctx, dstMeta); err != nil {
		return err
	}

	return nil
}

Langkah selanjutnya

Untuk menelusuri dan memfilter contoh kode untuk produk Google Cloud lainnya, lihat browser contoh Google Cloud.