Mengelola tabel virtual

Dokumen ini menjelaskan cara mengelola tampilan di BigQuery. Anda dapat mengelola tampilan BigQuery dengan cara berikut:

Sebelum memulai

Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini. Izin yang diperlukan untuk melakukan tugas (jika ada) tercantum di bagian "Izin yang diperlukan" pada tugas.

Memperbarui tampilan

Setelah membuat tampilan, Anda dapat memperbarui properti tampilan berikut:

Izin yang diperlukan

Untuk memperbarui tampilan, Anda memerlukan izin IAM berikut:

  • bigquery.tables.update
  • bigquery.tables.get

Setiap peran IAM bawaan berikut menyertakan izin yang Anda perlukan untuk memperbarui tampilan:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui tabel dan tampilan di set data yang Anda buat.

Untuk memperbarui kueri SQL tampilan, Anda juga harus memiliki izin untuk membuat kueri tabel apa pun yang direferensikan oleh kueri SQL tampilan.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin bawaan.

Memperbarui kueri SQL tampilan

Anda dapat memperbarui kueri SQL yang digunakan untuk mendefinisikan tampilan dengan:

  • Menggunakan konsol Google Cloud
  • Menggunakan perintah bq update alat command line bq
  • Memanggil metode API tables.patch
  • Menggunakan library klien

Anda dapat mengubah dialek SQL dari SQL lama ke GoogleSQL dengan API atau alat command line bq. Anda tidak dapat memperbarui tampilan SQL lama ke GoogleSQL di Konsol Google Cloud.

Untuk memperbarui kueri SQL tampilan:

Konsol

  1. Di panel Penjelajah, luaskan project dan set data Anda, lalu pilih tampilan.

  2. Klik tab Detail.

  3. Di atas kotak Kueri, klik tombol Edit kueri. Klik Buka di dialog yang muncul.

    Edit kueri

  4. Edit kueri SQL di kotak Editor kueri, lalu klik Simpan tampilan.

    Save view

  5. Pastikan semua kolom sudah benar dalam dialog Simpan tampilan, lalu klik Simpan.

bq

Jalankan perintah bq update dengan flag --view. Untuk menggunakan GoogleSQL atau memperbarui dialek kueri dari SQL lama ke GoogleSQL, sertakan flag --use_legacy_sql dan setel ke false.

Jika kueri Anda merujuk ke resource fungsi eksternal yang ditentukan pengguna dan disimpan di Cloud Storage atau di file lokal, gunakan flag --view_udf_resource untuk menentukan resource tersebut. Flag --view_udf_resource tidak ditunjukkan di sini. Untuk informasi penggunaan UDF lebih lanjut, lihat Fungsi GoogleSQL yang Ditentukan Pengguna.

Jika Anda memperbarui tampilan dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq update \
    --use_legacy_sql=false \
    --view_udf_resource=path_to_file \
    --view='query' \
    project_id:dataset.view

Ganti kode berikut:

  • path_to_file: jalur sistem file URI atau lokal ke file kode yang akan dimuat dan dievaluasi segera sebagai resource fungsi yang ditentukan pengguna yang digunakan oleh tampilan. Ulangi flag untuk menentukan beberapa file.
  • query: kueri GoogleSQL yang valid
  • project_id: project ID Anda
  • dataset: nama set data yang berisi tampilan yang Anda perbarui
  • view: nama tampilan yang Anda perbarui

Contoh

Masukkan perintah berikut untuk memperbarui kueri SQL untuk tampilan bernama myview di mydataset. mydataset ada dalam project default Anda. Contoh kueri yang digunakan untuk memperbarui data kueri tampilan dari set data publik Data Nama AS.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    mydataset.myview

Masukkan perintah berikut untuk memperbarui kueri SQL untuk tampilan bernama myview di mydataset. mydataset ada di myotherproject, bukan di project default Anda. Contoh kueri yang digunakan untuk memperbarui data kueri tampilan dari set data publik Data Nama AS.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    myotherproject:mydataset.myview

API

Anda dapat memperbarui tampilan dengan memanggil metode tables.patch dengan resource tabel yang berisi properti view yang telah diperbarui. Karena metode tables.update menggantikan seluruh resource tabel, metode tables.patch akan lebih disarankan.

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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// updateView demonstrates updating the query metadata that defines a logical view.
func updateView(projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}

	newMeta := bigquery.TableMetadataToUpdate{
		// This example updates a view into the shakespeare dataset to exclude works named after kings.
		ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
	}

	if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

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

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.ViewDefinition;

// Sample to update query on a view
public class UpdateViewQuery {

  public static void runUpdateViewQuery() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String viewName = "MY_VIEW_NAME";
    String updateQuery =
        String.format("SELECT TimestampField, StringField FROM %s.%s", datasetName, tableName);
    updateViewQuery(datasetName, viewName, updateQuery);
  }

  public static void updateViewQuery(String datasetName, String viewName, String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Retrieve existing view metadata
      TableInfo viewMetadata = bigquery.getTable(TableId.of(datasetName, viewName));

      // Update view query
      ViewDefinition viewDefinition = viewMetadata.getDefinition();
      viewDefinition.toBuilder().setQuery(query).build();

      // Set metadata
      bigquery.update(viewMetadata.toBuilder().setDefinition(viewDefinition).build());

      System.out.println("View query updated successfully");
    } catch (BigQueryException e) {
      System.out.println("View query was not updated. \n" + e.toString());
    }
  }
}

Node.js

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

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

// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateViewQuery() {
  // Updates a view named "my_existing_view" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_existing_dataset"
  // const tableId = "my_existing_table"
  const dataset = await bigquery.dataset(datasetId);

  // This example updates a view into the USA names dataset to include state.
  const newViewQuery = `SELECT name, state 
  FROM \`bigquery-public-data.usa_names.usa_1910_current\`
  LIMIT 10`;

  // Retrieve existing view
  const [view] = await dataset.table(tableId).get();

  // Retrieve existing view metadata
  const [metadata] = await view.getMetadata();

  // Update view query
  metadata.view = newViewQuery;

  // Set metadata
  await view.setMetadata(metadata);

  console.log(`View ${tableId} updated.`);
}

Python

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

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

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
source_id = "my-project.my_dataset.my_table"
view = bigquery.Table(view_id)

# The source table in this example is created from a CSV file in Google
# Cloud Storage located at
# `gs://cloud-samples-data/bigquery/us-states/us-states.csv`. It contains
# 50 US states, while the view returns only those states with names
# starting with the letter 'M'.
view.view_query = f"SELECT name, post_abbr FROM `{source_id}` WHERE name LIKE 'M%'"

# Make an API request to update the query property of the view.
view = client.update_table(view, ["view_query"])
print(f"Updated {view.table_type}: {str(view.reference)}")

Memperbarui waktu habis masa berlaku tampilan

Anda dapat menetapkan waktu habis masa berlaku tabel default di level set data (yang memengaruhi tabel dan tampilan), atau Anda dapat menetapkan waktu habis masa berlaku tampilan saat tampilan dibuat. Jika Anda menetapkan tanggal habis masa berlaku saat tampilan dibuat, waktu habis masa berlaku tabel default set data akan diabaikan. Jika Anda tidak menetapkan waktu habis masa berlaku tabel default di tingkat set data, dan Anda tidak menetapkan waktu habis masa berlaku saat tampilan dibuat, tampilan tidak akan berakhir masa berlakunya dan Anda harus menghapus tampilan secara manual.

Kapan pun setelah tampilan dibuat, Anda dapat memperbarui waktu habis masa berlaku tampilan dengan:

  • Menggunakan konsol Google Cloud
  • Menggunakan pernyataan Bahasa definisi data (DDL) yang ditulis dalam sintaksis GoogleSQL
  • Menggunakan perintah bq update alat command line bq
  • Memanggil metode API tables.patch
  • Menggunakan library klien

Untuk memperbarui waktu habis masa berlaku tampilan:

Konsol

  1. Di panel navigasi, pilih tampilan Anda.

  2. Di halaman Detail tampilan, klik tab Detail.

  3. Di sebelah kanan Info tampilan, klik ikon edit (pensil).

  4. Dalam dialog Info tampilan, untuk Waktu habis masa berlaku tampilan, klik Tentukan tanggal.

  5. Pada pemilih tanggal, masukkan tanggal dan waktu habis masa berlaku, lalu klik Oke.

  6. Klik Perbarui. Waktu habis masa berlaku yang diperbarui akan muncul di bagian Info tampilan.

SQL

Gunakan pernyataan DDL ALTER VIEW SET OPTIONS:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));

    Ganti kode berikut:

    • DATASET_ID: ID set data yang berisi tampilan Anda
    • MY_VIEW: nama tampilan yang akan diperbarui
    • NEW_TIMESTAMP: nilai TIMESTAMP

  3. Klik Run.

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

bq

Jalankan perintah bq update dengan flag --expiration. Jika Anda memperbarui tampilan dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq update \
    --expiration integer \
    project_id:dataset.view

Ganti kode berikut:

  • integer: masa aktif default (dalam detik) untuk tabel. Nilai minimum adalah 3.600 detik (satu jam). Waktu habis masa berlaku mengevaluasi waktu saat ini ditambah nilai bilangan bulat.
  • project_id: project ID Anda
  • dataset: nama set data yang berisi tampilan yang Anda perbarui
  • view: nama tampilan yang Anda perbarui

Contoh

Masukkan perintah berikut untuk mengupdate waktu habis masa berlaku myview di mydataset menjadi 5 hari (432000 detik). mydataset ada dalam project default Anda.

bq update \
    --expiration 432000 \
    mydataset.myview

Masukkan perintah berikut untuk mengupdate waktu habis masa berlaku myview di mydataset menjadi 5 hari (432000 detik). mydataset ada di myotherproject, bukan project default Anda.

bq update \
    --expiration 432000 \
    myotherproject:mydataset.myview

API

Panggil metode tables.patch dan gunakan properti expirationTime di resource tabel. Karena metode tables.update menggantikan seluruh resource tabel, metode tables.patch akan dipilih. Saat Anda menggunakan REST API, waktu habis masa berlaku tampilan dinyatakan dalam milidetik.

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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"
	"time"

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

// updateTableExpiration demonstrates setting the table expiration of a table to a specific point in time
// in the future, at which time it will be deleted.
func updateTableExpiration(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

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

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

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

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateTableExpiration() {
  // Updates a table's expiration.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset', // Existing dataset
  // const tableId = 'my_table', // Existing table
  // const expirationTime = Date.now() + 1000 * 60 * 60 * 24 * 5 // 5 days from current time in ms

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table expiration to 5 days from current time
  metadata.expirationTime = expirationTime.toString();
  const [apiResponse] = await table.setMetadata(metadata);

  const newExpirationTime = apiResponse.expirationTime;
  console.log(`${tableId} expiration: ${newExpirationTime}`);
}

Python

Memperbarui waktu habis masa berlaku tampilan adalah proses yang sama dengan memperbarui waktu habis masa berlaku tabel.

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

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

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you want to update.
table_id = "your-project.your_dataset.your_table_name"

# TODO(dev): Set table to expire for desired days days from now.
expiration = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
    days=5
)
table = client.get_table(table_id)  # Make an API request.
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

print(f"Updated {table_id}, expires {table.expires}.")

Memperbarui deskripsi tampilan

Anda dapat memperbarui deskripsi tampilan dengan:

  • Menggunakan konsol Google Cloud
  • Menggunakan pernyataan Bahasa definisi data (DDL) yang ditulis dalam sintaksis GoogleSQL
  • Menggunakan perintah bq update alat command line bq
  • Memanggil metode API tables.patch
  • Menggunakan library klien

Untuk memperbarui deskripsi tampilan:

Konsol

Anda tidak dapat menambahkan deskripsi saat membuat tampilan menggunakan konsol Google Cloud. Setelah tampilan dibuat, Anda dapat menambahkan deskripsi di halaman Detail.

  1. Di panel Penjelajah, luaskan project dan set data Anda, lalu pilih tampilan.

  2. Klik tab Detail.

  3. Klik ikon pensil di samping Deskripsi.

    Edit deskripsi tampilan

  4. Masukkan deskripsi di kotak dialog. Klik Perbarui untuk menyimpan deskripsi baru.

SQL

Gunakan pernyataan DDL ALTER VIEW SET OPTIONS:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      description = 'NEW_DESCRIPTION');

    Ganti kode berikut:

    • DATASET_ID: ID set data yang berisi tampilan Anda
    • MY_VIEW: nama tampilan yang akan diperbarui
    • NEW_DESCRIPTION: deskripsi tampilan baru

  3. Klik Run.

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

bq

Jalankan perintah bq update dengan flag --description. Jika Anda memperbarui tampilan dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: [PROJECT_ID]:[DATASET].

bq update \
    --description "description" \
    project_id:dataset.view

Ganti kode berikut:

  • description: teks yang menjelaskan tampilan dalam tanda kutip
  • project_id: project ID Anda.
  • dataset: nama set data yang berisi tampilan yang Anda perbarui
  • view: nama tampilan yang Anda perbarui

Contoh

Masukkan perintah berikut untuk mengubah deskripsi myview di mydataset menjadi "Description of myview". mydataset ada dalam project default Anda.

bq update \
    --description "Description of myview" \
    mydataset.myview

Masukkan perintah berikut untuk mengubah deskripsi myview di mydataset menjadi "Description of myview". mydataset ada di myotherproject, bukan project default Anda.

bq update \
    --description "Description of myview" \
    myotherproject:mydataset.myview

API

Panggil metode tables.patch dan gunakan properti description untuk memperbarui deskripsi tampilan di resource tabel. Karena metode tables.update menggantikan seluruh resource tabel, metode tables.patch akan dipilih.

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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// updateTableDescription demonstrates how to fetch a table's metadata and updates the Description metadata.
func updateTableDescription(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		Description: "Updated description.",
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

Memperbarui deskripsi tampilan adalah proses yang sama dengan memperbarui deskripsi tabel.

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

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

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

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

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateTableDescription() {
  // Updates a table's description.

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table description
  const description = 'New table description.';
  metadata.description = description;
  const [apiResponse] = await table.setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${tableId} description: ${newDescription}`);
}

Python

Memperbarui deskripsi tampilan adalah proses yang sama dengan memperbarui deskripsi tabel.

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

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

# from google.cloud import bigquery
# client = bigquery.Client()
# project = client.project
# dataset_ref = bigquery.DatasetReference(project, dataset_id)
# table_ref = dataset_ref.table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Menyalin tampilan

Anda dapat menyalin tampilan menggunakan konsol Google Cloud.

Anda tidak dapat menyalin tampilan menggunakan alat command line bq, REST API, atau library klien, tetapi Anda dapat menyalin tampilan di set data target.

Izin yang diperlukan

Untuk menyalin tampilan di konsol Google Cloud, Anda memerlukan izin IAM pada set data sumber dan tujuan.

  • Pada set data sumber, Anda memerlukan hal berikut:

    • bigquery.tables.get
    • bigquery.tables.getData (diperlukan untuk mengakses tabel yang dirujuk oleh kueri SQL tampilan)
  • Pada set data tujuan, Anda memerlukan hal berikut:

    • bigquery.tables.create (memungkinkan Anda membuat salinan tampilan di set data tujuan)

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk menyalin tampilan:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat menyalin tampilan dalam set data yang Anda buat. Anda juga memerlukan akses ke set data tujuan kecuali Anda membuatnya.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin bawaan.

Menyalin tampilan

Untuk menyalin tampilan:

  1. Di panel Penjelajah, luaskan project dan set data Anda, lalu pilih tampilan.

  2. Di panel detail, klik Salin tampilan.

  3. Dalam dialog Salin tampilan:

    • Di bagian Sumber, pastikan Nama project, Nama set data, dan Nama tabel sudah benar.
    • Di bagian Tujuan:

      • Untuk Nama project, pilih project ke mana Anda akan menyalin tampilan.
      • Untuk Nama set data, pilih set data yang akan berisi tampilan yang disalin.
      • Untuk Nama tabel, masukkan nama tampilan. Anda dapat mengganti nama tampilan dengan memasukkan nama tampilan baru di kotak. Jika Anda memasukkan nama baru, nama tersebut harus mengikuti aturan penamaan tampilan.

      Dialog Salin tampilan

    • Klik Copy.

Batas untuk tugas penyalinan berlaku. Untuk mengetahui informasi selengkapnya, silakan melihat Kuota dan batas.

Mengganti nama tampilan

Saat ini, Anda hanya dapat mengganti nama tampilan jika menggunakan konsol Google Cloud untuk menyalin tampilan. Untuk petunjuk tentang cara mengganti nama tampilan saat menyalinnya, lihat Menyalin tampilan.

Anda tidak dapat mengubah nama tampilan yang ada menggunakan alat command line bq, API, atau library klien. Sebagai gantinya, Anda harus membuat ulang tampilan dengan nama baru.

Menghapus tampilan

Anda dapat menghapus tampilan dengan:

  • Menggunakan konsol Google Cloud
  • Menggunakan perintah bq rm alat command line bq
  • Memanggil metode API tables.delete

Saat ini, dengan menggunakan metode yang tersedia, Anda hanya dapat menghapus satu tampilan dalam satu waktu.

Untuk menghapus tampilan secara otomatis setelah jangka waktu tertentu, tetapkan waktu habis masa berlaku default pada tingkat set data atau tetapkan waktu habis masa berlaku saat Anda membuat tampilan.

Saat Anda menghapus tampilan yang diotorisasi, mungkin perlu waktu hingga 24 jam untuk menghapus tampilan yang dihapus dari daftar tampilan yang diotorisasi dari set data sumber.

Menghapus tampilan juga akan menghapus semua izin yang terkait dengan tampilan ini. Saat membuat ulang tampilan yang dihapus, Anda juga harus mengonfigurasi ulang izin akses apa pun yang sebelumnya terkait dengannya secara manual.

Izin yang diperlukan

Untuk menghapus tampilan, Anda memerlukan izin IAM berikut:

  • bigquery.tables.delete

Setiap peran IAM bawaan berikut menyertakan izin yang Anda perlukan untuk menghapus tampilan:

  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat menghapus tampilan di set data yang Anda buat.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin bawaan.

Menghapus tampilan

Untuk menghapus tampilan:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Penjelajah, luaskan project dan set data Anda, lalu pilih tampilan.

  3. Di panel detail, klik Hapus tampilan.

  4. Ketikkan "delete" dalam dialog, lalu klik Hapus untuk mengonfirmasi.

SQL

Gunakan pernyataan DDL DROP VIEW:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    DROP VIEW mydataset.myview;

    Ganti kode berikut:

    • DATASET_ID: ID set data yang berisi tampilan Anda
    • MY_VIEW: nama tampilan yang akan diperbarui
    • NEW_DESCRIPTION: deskripsi tampilan baru

  3. Klik Run.

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

bq

Gunakan perintah bq rm dengan flag --table (atau pintasan -t) untuk menghapus tampilan. Saat menggunakan alat command line bq untuk menghapus tampilan, Anda harus mengonfirmasi tindakan tersebut. Anda dapat menggunakan flag --force (atau pintasan -f) untuk melewati konfirmasi.

Jika tampilan berada dalam set data dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq rm \
-f \
-t \
project_id:dataset.view

Dengan keterangan:

  • project_id adalah project ID Anda.
  • dataset adalah nama set data yang berisi tabel.
  • view adalah nama tampilan yang akan Anda hapus.

Contoh:

Anda dapat menggunakan alat command line bq untuk menjalankan perintah bq.

Di konsol Google Cloud, aktifkan Cloud Shell.

Activate Cloud Shell

Masukkan perintah berikut untuk menghapus myview dari mydataset. mydataset berada dalam project default Anda.

bq rm -t mydataset.myview

Masukkan perintah berikut untuk menghapus myview dari mydataset. mydataset berada di myotherproject, bukan di project default Anda.

bq rm -t myotherproject:mydataset.myview

Masukkan perintah berikut untuk menghapus myview dari mydataset. mydataset berada dalam project default Anda. Perintah tersebut menggunakan pintasan -f untuk mengabaikan konfirmasi.

bq rm -f -t mydataset.myview

API

Panggil metode API tables.delete dan tentukan tampilan yang akan dihapus menggunakan parameter tableId.

C#

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

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


using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// deleteTable demonstrates deletion of a BigQuery table.
func deleteTable(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	table := client.Dataset(datasetID).Table(tableID)
	if err := table.Delete(ctx); err != nil {
		return err
	}
	return nil
}

Java

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

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

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

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

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

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

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

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

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

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


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True.
client.delete_table(table_id, not_found_ok=True)  # Make an API request.
print("Deleted table '{}'.".format(table_id))

Ruby

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

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

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Memulihkan tampilan

Anda tidak dapat memulihkan tampilan yang dihapus secara langsung, tetapi ada solusi untuk skenario tertentu:

  • Jika tampilan dihapus karena set data induk dihapus, Anda dapat membatalkan penghapusan set data untuk mengambil tampilan.
  • Jika tampilan dihapus secara eksplisit, Anda dapat membuat ulang tampilan menggunakan kueri terakhir yang digunakan untuk membuat atau memperbarui tampilan. Anda dapat menemukan definisi kueri operasi pembuatan atau pembaruan tampilan di log.

Keamanan tampilan

Untuk mengontrol akses ke tampilan di BigQuery, lihat Tampilan yang diotorisasi.

Langkah selanjutnya