Memperbarui properti set data

Dokumen ini menjelaskan cara memperbarui properti set data di BigQuery. Setelah membuat set data, Anda dapat memperbarui properti set data 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 memperbarui properti set data, Anda memerlukan izin IAM berikut:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (hanya diperlukan saat memperbarui kontrol akses set data di Konsol Google Cloud)

Peran IAM roles/bigquery.dataOwner yang telah ditetapkan mencakup izin yang Anda perlukan untuk memperbarui properti set data.

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui properti set data yang Anda buat.

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditetapkan.

Memperbarui deskripsi set data

Anda dapat memperbarui deskripsi set data dengan cara berikut:

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

Untuk memperbarui deskripsi set data:

Konsol

  1. Di panel Explorer, luaskan project Anda dan pilih set data.

  2. Luaskan opsi Tindakan dan klik Buka.

  3. Di panel Detail, klik Edit detail untuk mengedit teks deskripsi.

    Pada dialog Edit detail yang muncul, lakukan tindakan berikut:

    1. Di kolom Deskripsi, masukkan deskripsi atau edit deskripsi yang ada.
    2. Untuk menyimpan teks deskripsi baru, klik Simpan.

SQL

Untuk memperbarui deskripsi set data, gunakan pernyataan ALTER SCHEMA SET OPTIONS untuk menetapkan opsi description.

Contoh berikut menetapkan deskripsi pada set data bernama mydataset:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

     ALTER SCHEMA mydataset
     SET OPTIONS (
         description = 'Description of mydataset');
     

  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 set data dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq update \
--description "string" \
project_id:dataset

Ganti kode berikut:

  • string: teks yang mendeskripsikan set data, dalam tanda kutip
  • project_id: project ID Anda
  • dataset: nama set data yang Anda perbarui

Contoh:

Masukkan perintah berikut untuk mengubah deskripsi mydataset menjadi "Deskripsi setdatasaya". mydataset ada dalam project default Anda.

bq update --description "Description of mydataset" mydataset

Masukkan perintah berikut untuk mengubah deskripsi mydataset menjadi "Deskripsi setdatasaya". Set data berada di myotherproject, bukan di project default Anda.

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

API

Panggil datasets.patch dan perbarui properti description di resource set data. Karena metode datasets.update menggantikan seluruh resource set data, metode datasets.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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// updateDatasetDescription demonstrates how the Description metadata of a dataset can
// be read and modified.
func updateDatasetDescription(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{
		Description: "Updated Description.",
	}
	if _, err = ds.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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Buat instance Dataset.Builder dari instance Dataset yang ada dengan metode Dataset.toBuilder(). Mengonfigurasi objek builder set data. Buat set data yang telah diperbarui dengan metode Dataset.Builder.build(), dan panggil metode Dataset.update() untuk mengirim pembaruan ke API.
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;

public class UpdateDatasetDescription {

  public static void runUpdateDatasetDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String newDescription = "this is the new dataset description";
    updateDatasetDescription(datasetName, newDescription);
  }

  public static void updateDatasetDescription(String datasetName, String newDescription) {
    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();

      Dataset dataset = bigquery.getDataset(datasetName);
      bigquery.update(dataset.toBuilder().setDescription(newDescription).build());
      System.out.println("Dataset description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Dataset description 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 mengetahui 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 updateDatasetDescription() {
  // Updates a dataset's description.

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

  // Set new dataset description
  const description = 'New dataset description.';
  metadata.description = description;

  const [apiResponse] = await dataset.setMetadata(metadata);
  const newDescription = apiResponse.description;

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

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

Konfigurasi properti Dataset.description dan panggil Client.update_dataset() untuk mengirim update ke API.

from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.
dataset.description = "Updated description."
dataset = client.update_dataset(dataset, ["description"])  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with description '{}'.".format(
        full_dataset_id, dataset.description
    )
)

Memperbarui waktu habis masa berlaku tabel default

Anda dapat mengupdate waktu habis masa berlaku tabel default set data dengan cara berikut:

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

Anda dapat menetapkan waktu habis masa berlaku tabel default di level set data, atau menetapkan waktu habis masa berlaku tabel saat tabel dibuat. Jika Anda menetapkan tanggal habis masa berlaku saat tabel dibuat, masa berlaku tabel default set data akan diabaikan. Jika Anda tidak menetapkan tanggal habis masa berlaku tabel default di level set data, dan Anda tidak menetapkan tanggal habis masa berlaku tabel saat tabel dibuat, tabel tidak akan pernah berakhir masa berlakunya dan Anda harus menghapus tabel tersebut secara manual. Ketika masa berlaku tabel berakhir, tabel itu akan dihapus bersama dengan semua data yang ada di dalamnya.

Saat Anda memperbarui setelan habis masa berlaku tabel default set data:

  • Jika Anda mengubah nilai dari Never menjadi waktu habis masa berlaku yang ditentukan, setiap tabel yang sudah ada dalam set data tidak akan habis masa berlakunya kecuali jika waktu habis masa berlaku ditetapkan di tabel saat dibuat.
  • Jika Anda mengubah nilai masa berlaku tabel default, setiap tabel yang sudah ada akan habis masa berlakunya sesuai dengan setelan habis masa berlaku tabel yang asli. Setiap tabel baru yang dibuat dalam set data akan menerapkan setelan habis masa berlaku tabel baru, kecuali jika Anda menentukan tanggal lain untuk habisnya masa berlaku tabel pada tabel saat dibuat.

Nilai untuk akhir masa berlaku tabel default dinyatakan secara berbeda, bergantung pada tempat nilai tersebut ditetapkan. Gunakan metode yang memberikan level perincian yang sesuai:

  • Di konsol Google Cloud, akhir masa berlaku dinyatakan dalam hari.
  • Di alat command line bq, akhir masa berlaku dinyatakan dalam detik.
  • Di API, akhir masa berlaku dinyatakan dalam milidetik.

Untuk memperbarui waktu habis masa berlaku default untuk set data:

Konsol

  1. Di panel Explorer, luaskan project Anda dan pilih set data.

  2. Luaskan opsi Tindakan dan klik Buka.

  3. Di panel detail, klik ikon pensil di samping Info set data untuk mengedit masa berlaku.

  4. Pada dialog Info set data, di bagian Masa berlaku tabel default, masukkan nilai untuk Jumlah hari setelah pembuatan tabel.

  5. Klik Save.

SQL

Untuk mengupdate waktu habis masa berlaku tabel default, gunakan pernyataan ALTER SCHEMA SET OPTIONS untuk menetapkan opsi default_table_expiration_days.

Contoh berikut mengupdate akhir masa berlaku tabel default untuk set data bernama mydataset.

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

     ALTER SCHEMA mydataset
     SET OPTIONS(
         default_table_expiration_days = 3.75);
     

  3. Klik Run.

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

bq

Untuk mengupdate waktu habis masa berlaku default untuk tabel yang baru dibuat dalam set data, masukkan perintah bq update dengan flag --default_table_expiration. Jika Anda memperbarui set data dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq update \
--default_table_expiration integer \
project_id:dataset

Ganti kode berikut:

  • integer: masa aktif default, dalam detik, untuk tabel yang baru dibuat. Nilai minimum adalah 3.600 detik (satu jam). Waktu habis masa berlaku mengevaluasi waktu UTC saat ini ditambah nilai bilangan bulat. Tentukan 0 untuk menghapus waktu habis masa berlaku yang ada. Setiap tabel yang dibuat dalam set data akan dihapus integer detik setelah waktu pembuatannya. Nilai ini diterapkan jika Anda tidak menetapkan waktu masa berlaku tabel saat tabel dibuat.
  • project_id: project ID Anda.
  • dataset: nama set data yang Anda perbarui.

Contoh:

Masukkan perintah berikut untuk menetapkan masa berlaku tabel default untuk tabel baru yang dibuat di mydataset menjadi dua jam (7200 detik) dari waktu saat ini. Set data ada dalam project default Anda.

bq update --default_table_expiration 7200 mydataset

Masukkan perintah berikut untuk menetapkan masa berlaku tabel default untuk tabel baru yang dibuat di mydataset menjadi dua jam (7200 detik) dari waktu saat ini. Set data ada di myotherproject, bukan di project default Anda.

bq update --default_table_expiration 7200 myotherproject:mydataset

API

Panggil datasets.patch dan perbarui properti defaultTableExpirationMs di resource set data. Masa berlaku dinyatakan dalam milidetik di API. Karena metode datasets.update menggantikan seluruh resource set data, metode datasets.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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"
	"time"

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

// updateDatasetDefaultExpiration demonstrats setting the default expiration of a dataset
// to a specific retention period.
func updateDatasetDefaultExpiration(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{
		DefaultTableExpiration: 24 * time.Hour,
	}
	if _, err := client.Dataset(datasetID).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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Buat instance Dataset.Builder dari instance Dataset yang ada dengan metode Dataset.toBuilder(). Mengonfigurasi objek builder set data. Buat set data yang telah diperbarui dengan metode Dataset.Builder.build(), dan panggil metode Dataset.update() untuk mengirim pembaruan ke API.

Mengonfigurasi waktu habis masa berlaku default dengan metode Dataset.Builder.setDefaultTableLifetime().

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import java.util.concurrent.TimeUnit;

public class UpdateDatasetExpiration {

  public static void runUpdateDatasetExpiration() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    updateDatasetExpiration(datasetName);
  }

  public static void updateDatasetExpiration(String datasetName) {
    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();

      // Update dataset expiration to one day
      Long newExpiration = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);

      Dataset dataset = bigquery.getDataset(datasetName);
      bigquery.update(dataset.toBuilder().setDefaultTableLifetime(newExpiration).build());
      System.out.println("Dataset description updated successfully to " + newExpiration);
    } catch (BigQueryException e) {
      System.out.println("Dataset expiration 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 mengetahui 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 updateDatasetExpiration() {
  // Updates the lifetime of all tables in the dataset, in milliseconds.

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

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

  // Set new dataset metadata
  const expirationTime = 24 * 60 * 60 * 1000;
  metadata.defaultTableExpirationMs = expirationTime.toString();

  const [apiResponse] = await dataset.setMetadata(metadata);
  const newExpirationTime = apiResponse.defaultTableExpirationMs;

  console.log(`${datasetId} expiration: ${newExpirationTime}`);
}

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

Konfigurasi properti Dataset.default_table_expiration_ms dan panggil Client.update_dataset() untuk mengirim update ke API.

from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)  # Make an API request.
dataset.default_table_expiration_ms = 24 * 60 * 60 * 1000  # In milliseconds.

dataset = client.update_dataset(
    dataset, ["default_table_expiration_ms"]
)  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset {} with new expiration {}".format(
        full_dataset_id, dataset.default_table_expiration_ms
    )
)

Mengupdate waktu habis masa berlaku partisi default

Anda dapat mengupdate waktu masa berlaku partisi default set data dengan cara berikut:

  • Menggunakan perintah bq update alat command line bq.
  • Memanggil metode API datasets.patch.
  • Menggunakan library klien.

Menyetel atau mengupdate akhir masa berlaku partisi default set data saat ini tidak didukung oleh Konsol Google Cloud.

Anda dapat menetapkan waktu habis masa berlaku partisi default pada level set data yang memengaruhi semua tabel berpartisi yang baru dibuat, atau Anda dapat menetapkan waktu masa berlaku partisi untuk setiap tabel saat tabel berpartisi dibuat. Jika Anda menetapkan tanggal habis masa berlaku partisi default pada level set data, dan Anda menetapkan tanggal habis masa berlaku tabel default pada level set data, tabel berpartisi baru hanya akan memiliki masa berlaku partisi. Jika kedua opsi tersebut disetel, masa berlaku partisi default akan menggantikan habis masa berlaku tabel default.

Jika Anda menetapkan waktu habis masa berlaku partisi saat tabel berpartisi dibuat, nilai tersebut akan menggantikan akhir masa berlaku partisi default level set data jika ada.

Jika masa berlaku partisi default tidak ditetapkan pada level set data, dan masa berlaku partisi tidak ditetapkan saat tabel dibuat, partisi tidak akan pernah berakhir masa berlakunya dan Anda harus menghapus partisi secara manual.

Saat Anda menetapkan masa berlaku partisi default pada set data, masa berlaku tersebut akan berlaku untuk semua partisi di semua tabel berpartisi yang dibuat dalam set data. Jika Anda menetapkan masa berlaku partisi di tabel, masa berlaku akan berlaku untuk semua partisi yang dibuat dalam tabel yang ditentukan. Saat ini, Anda tidak dapat menerapkan waktu habis masa berlaku yang berbeda untuk partisi yang berbeda dalam tabel yang sama.

Saat Anda memperbarui setelan habis masa berlaku partisi default dari set data:

  • Jika Anda mengubah nilainya dari never menjadi waktu habis masa berlaku yang ditentukan, setiap partisi yang sudah ada dalam tabel berpartisi dalam set data tidak akan berakhir kecuali jika waktu habis masa berlaku partisi ditetapkan di tabel saat{i> <i} 101}dibuat.
  • Jika Anda mengubah nilai untuk masa berlaku partisi default, setiap partisi dalam tabel berpartisi yang sudah ada akan berakhir masa berlakunya sesuai dengan tanggal habis masa berlaku partisi default yang asli. Setiap tabel berpartisi baru yang dibuat dalam set data akan menerapkan setelan habis masa berlaku partisi default baru, kecuali jika Anda menentukan masa berlaku partisi yang berbeda pada tabel saat dibuat.

Nilai untuk akhir masa berlaku partisi default dinyatakan secara berbeda, bergantung pada tempat nilai tersebut ditetapkan. Gunakan metode yang memberikan level perincian yang sesuai:

  • Di alat command line bq, akhir masa berlaku dinyatakan dalam detik.
  • Di API, akhir masa berlaku dinyatakan dalam milidetik.

Untuk mengupdate waktu habis masa berlaku partisi default untuk set data:

Konsol

Mengupdate masa berlaku partisi default set data saat ini tidak didukung oleh Konsol Google Cloud.

SQL

Untuk mengupdate waktu habis masa berlaku partisi default, gunakan pernyataan ALTER SCHEMA SET OPTIONS untuk menetapkan opsi default_partition_expiration_days.

Contoh berikut memperbarui akhir masa berlaku partisi default untuk set data bernama mydataset:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

     ALTER SCHEMA mydataset
     SET OPTIONS(
         default_partition_expiration_days = 3.75);
     

  3. Klik Run.

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

bq

Untuk mengupdate waktu habis masa berlaku default untuk set data, masukkan perintah bq update dengan flag --default_partition_expiration. Jika Anda memperbarui set data dalam project selain project default, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

bq update \
--default_partition_expiration integer \
project_id:dataset

Ganti kode berikut:

  • integer: masa aktif default, dalam detik, untuk partisi dalam tabel berpartisi yang baru dibuat. Flag ini tidak memiliki nilai minimum. Tentukan 0 untuk menghapus waktu habis masa berlaku yang ada. Setiap partisi dalam tabel berpartisi yang baru dibuat akan dihapus integer detik setelah tanggal UTC partisi. Nilai ini diterapkan jika Anda tidak menetapkan akhir masa berlaku partisi pada tabel saat dibuat.
  • project_id: project ID Anda.
  • dataset: nama set data yang Anda perbarui.

Contoh:

Masukkan perintah berikut untuk menetapkan masa berlaku partisi default untuk tabel berpartisi baru yang dibuat dalam mydataset menjadi 26 jam (93.600 detik). Set data ada dalam project default Anda.

bq update --default_partition_expiration 93600 mydataset

Masukkan perintah berikut untuk menetapkan masa berlaku partisi default untuk tabel berpartisi baru yang dibuat dalam mydataset menjadi 26 jam (93.600 detik). Set data ada di myotherproject, bukan di project default Anda.

bq update --default_partition_expiration 93600 myotherproject:mydataset

API

Panggil datasets.patch dan perbarui properti defaultPartitionExpirationMs di resource set data. Akhir masa berlaku dinyatakan dalam milidetik. Karena metode datasets.update menggantikan seluruh resource set data, metode datasets.patch akan direkomendasikan.

Memperbarui mode pembulatan

Anda dapat memperbarui mode pembulatan default set data menggunakan pernyataan DDL ALTER SCHEMA SET OPTIONS. Contoh berikut mengupdate mode pembulatan default untuk mydataset menjadi ROUND_HALF_EVEN.

ALTER SCHEMA mydataset
SET OPTIONS (
  default_rounding_mode = "ROUND_HALF_EVEN");

Tindakan ini menetapkan mode pembulatan default untuk tabel baru yang dibuat dalam set data. Perubahan ini tidak berdampak pada kolom baru yang ditambahkan ke tabel yang ada. Menetapkan mode pembulatan default pada tabel dalam set data akan mengganti opsi ini.

Memperbarui kontrol akses set data

Proses untuk memperbarui kontrol akses set data sangat mirip dengan proses menetapkan kontrol akses ke set data. Kontrol akses tidak dapat diterapkan selama pembuatan set data menggunakan Konsol Google Cloud atau alat command line bq. Anda harus membuat set data terlebih dahulu, lalu memperbarui kontrol akses set data. API memungkinkan Anda memperbarui kontrol akses set data dengan memanggil metode datasets.patch.

Saat memperbarui kontrol akses di set data, Anda dapat mengubah akses untuk entity berikut:

  • Akun utama IAM:

    • Email Akun Google: Memberikan akses Akun Google perorangan ke set data.
    • Google Grup: Memberikan akses ke set data kepada semua anggota grup Google.
    • Domain Google Workspace: Memberikan akses ke set data kepada semua pengguna dan grup di domain Google.
    • Akun layanan: Memberikan akses akun layanan ke set data.
    • Siapa saja: Masukkan allUsers untuk memberikan akses ke masyarakat umum.
    • Semua Akun Google: Masukkan allAuthenticatedUsers untuk memberikan akses kepada pengguna yang sudah login ke Akun Google.
  • Jenis resource:

Untuk memperbarui kontrol akses pada set data:

Konsol

  1. Di panel Explorer, luaskan project Anda dan pilih set data.

  2. Luaskan opsi Tindakan dan klik Buka.

  3. Klik Bagikan Set Data.

  4. Dalam dialog Bagikan Set data, untuk menghapus entri yang ada, luaskan entri, lalu klik ikon hapus (tempat sampah).

  5. Pada dialog Bagikan Set data, untuk menambahkan entri baru:

    1. Masukkan entity di kotak Tambahkan akun utama.

    2. Untuk Pilih peran, pilih peran IAM yang sesuai dari daftar. Untuk mengetahui informasi selengkapnya tentang izin yang ditetapkan ke setiap peran BigQuery yang telah ditetapkan, lihat halaman Peran dan izin yang telah ditetapkan.

    3. Klik Tambahkan.

  6. Untuk menambahkan tampilan yang diotorisasi, klik tab Tampilan yang diberi otorisasi, lalu masukkan project, set data, dan tampilan, lalu klik Tambahkan.

  7. Setelah selesai menambahkan atau menghapus kontrol akses, klik Selesai.

bq

  1. Tulis informasi set data yang ada (termasuk kontrol akses) ke file JSON menggunakan perintah show. Jika set data berada dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

    bq show \
    --format=prettyjson \
    project_id:dataset > path_to_file
    

    Ganti kode berikut:

    • project_id: project ID Anda.
    • dataset: nama set data Anda.
    • path_to_file: jalur ke file JSON di komputer lokal Anda.

    Contoh:

    Masukkan perintah berikut untuk menulis kontrol akses bagi mydataset ke file JSON. mydataset berada di project default Anda.

    bq show --format=prettyjson mydataset > /tmp/mydataset.json
    

    Masukkan perintah berikut untuk menulis kontrol akses bagi mydataset ke file JSON. mydataset ada di myotherproject.

    bq show --format=prettyjson \
    myotherproject:mydataset > /tmp/mydataset.json
    
  2. Buat perubahan pada bagian "access" pada file JSON. Anda dapat menambahkan atau menghapus salah satu entri specialGroup: projectOwners, projectWriters, projectReaders, dan allAuthenticatedUsers. Anda juga dapat menambahkan, menghapus, atau mengubah salah satu dari hal berikut: userByEmail, groupByEmail, dan domain.

    Misalnya, bagian akses file JSON set data akan terlihat seperti berikut:

    {
     "access": [
      {
       "role": "READER",
       "specialGroup": "projectReaders"
      },
      {
       "role": "WRITER",
       "specialGroup": "projectWriters"
      },
      {
       "role": "OWNER",
       "specialGroup": "projectOwners"
      }
      {
       "role": "READER",
       "specialGroup": "allAuthenticatedUsers"
      }
      {
       "role": "READER",
       "domain": "[DOMAIN_NAME]"
      }
      {
       "role": "WRITER",
       "userByEmail": "[USER_EMAIL]"
      }
      {
       "role": "READER",
       "groupByEmail": "[GROUP_EMAIL]"
      }
     ],
    }
    

  3. Setelah pengeditan selesai, gunakan perintah update dan sertakan file JSON menggunakan flag --source. Jika set data berada dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: project_id:dataset.

    bq update --source path_to_file project_id:dataset
    

    Ganti kode berikut:

    • path_to_file: jalur ke file JSON di komputer lokal Anda.
    • project_id: project ID Anda.
    • dataset: nama set data Anda.

    Contoh:

    Masukkan perintah berikut untuk memperbarui kontrol akses bagi mydataset. mydataset berada di project default Anda.

    bq update --source /tmp/mydataset.json mydataset
    

    Masukkan perintah berikut untuk memperbarui kontrol akses bagi mydataset. mydataset berada di myotherproject.

    bq update --source /tmp/mydataset.json myotherproject:mydataset
    
  4. Untuk memverifikasi perubahan kontrol akses, masukkan kembali perintah show tanpa perlu menuliskan informasi tersebut ke file.

    bq show --format=prettyjson dataset
    

    atau

    bq show --format=prettyjson project_id:dataset
    

API

Panggil datasets.patch dan perbarui properti access di resource set data.

Karena metode datasets.update menggantikan seluruh resource set data, datasets.patch adalah metode yang lebih disukai untuk memperbarui kontrol akses.

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"
)

// updateDatasetAccessControl demonstrates how the access control policy of a dataset
// can be amended by adding an additional entry corresponding to a specific user identity.
func updateDatasetAccessControl(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	// Append a new access control entry to the existing access list.
	update := bigquery.DatasetMetadataToUpdate{
		Access: append(meta.Access, &bigquery.AccessEntry{
			Role:       bigquery.ReaderRole,
			EntityType: bigquery.UserEmailEntity,
			Entity:     "sample.bigquery.dev@gmail.com"},
		),
	}

	// Leverage the ETag for the update to assert there's been no modifications to the
	// dataset since the metadata was originally read.
	if _, err := ds.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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Buat instance Dataset.Builder dari instance Dataset yang ada dengan metode Dataset.toBuilder(). Mengonfigurasi objek builder set data. Buat set data yang telah diperbarui dengan metode Dataset.Builder.build(), dan panggil metode Dataset.update() untuk mengirim pembaruan ke API.

Konfigurasikan kontrol akses dengan metode Dataset.Builder.setAcl().

import com.google.cloud.bigquery.Acl;
import com.google.cloud.bigquery.Acl.Role;
import com.google.cloud.bigquery.Acl.User;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import java.util.ArrayList;

public class UpdateDatasetAccess {

  public static void runUpdateDatasetAccess() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    updateDatasetAccess(datasetName);
  }

  public static void updateDatasetAccess(String datasetName) {
    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();

      Dataset dataset = bigquery.getDataset(datasetName);

      // Create a new ACL granting the READER role to "sample.bigquery.dev@gmail.com"
      // For more information on the types of ACLs available see:
      // https://cloud.google.com/storage/docs/access-control/lists
      Acl newEntry = Acl.of(new User("sample.bigquery.dev@gmail.com"), Role.READER);

      // Get a copy of the ACLs list from the dataset and append the new entry
      ArrayList<Acl> acls = new ArrayList<>(dataset.getAcl());
      acls.add(newEntry);

      bigquery.update(dataset.toBuilder().setAcl(acls).build());
      System.out.println("Dataset Access Control updated successfully");
    } catch (BigQueryException e) {
      System.out.println("Dataset Access control 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 mengetahui 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 updateDatasetAccess() {
  // Updates a datasets's access controls.

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

  // Create new role metadata
  const newRole = {
    role: 'READER',
    entity_type: 'userByEmail',
    userByEmail: 'sample.bigquery.dev@gmail.com',
  };

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

  // Add new role to role acess array
  metadata.access.push(newRole);
  const [apiResponse] = await dataset.setMetadata(metadata);
  const newAccessRoles = apiResponse.access;
  newAccessRoles.forEach(role => console.log(role));
}

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

Tetapkan properti dataset.access_entries dengan kontrol akses untuk set data. Kemudian, panggil fungsi client.update_dataset() untuk memperbarui properti.

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
dataset_id = "your-project.your_dataset"

# TODO(developer): Set entity_id to the ID of the email or group from whom
# you are adding access. Alternatively, to the JSON REST API representation
# of the entity, such as a view's table reference.
entity_id = "user-or-group-to-add@example.com"

from google.cloud.bigquery.enums import EntityTypes

# TODO(developer): Set entity_type to the type of entity you are granting access to.
# Common types include:
#
# * "userByEmail" -- A single user or service account. For example "fred@example.com"
# * "groupByEmail" -- A group of users. For example "example@googlegroups.com"
# * "view" -- An authorized view. For example
#       {"projectId": "p", "datasetId": "d", "tableId": "v"}
#
# For a complete reference, see the REST API reference documentation:
# https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#Dataset.FIELDS.access
entity_type = EntityTypes.GROUP_BY_EMAIL

# TODO(developer): Set role to a one of the "Basic roles for datasets"
# described here:
# https://cloud.google.com/bigquery/docs/access-control-basic-roles#dataset-basic-roles
role = "READER"

from google.cloud import bigquery

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

dataset = client.get_dataset(dataset_id)  # Make an API request.

entries = list(dataset.access_entries)
entries.append(
    bigquery.AccessEntry(
        role=role,
        entity_type=entity_type,
        entity_id=entity_id,
    )
)
dataset.access_entries = entries

dataset = client.update_dataset(dataset, ["access_entries"])  # Make an API request.

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with modified user permissions.".format(full_dataset_id)
)

Memperbarui periode perjalanan waktu

Anda dapat memperbarui periode perjalanan waktu set data dengan cara berikut:

  • Menggunakan konsol Google Cloud.
  • Menggunakan pernyataan ALTER SCHEMA SET OPTIONS.
  • Menggunakan perintah bq update alat command line bq.
  • Memanggil metode API datasets.patch atau datasets.update. Metode update mengganti seluruh resource set data, sedangkan metode patch hanya mengganti kolom yang disediakan di resource set data yang dikirimkan.

Untuk informasi selengkapnya tentang periode perjalanan waktu, lihat Mengonfigurasi periode perjalanan waktu.

Untuk memperbarui periode perjalanan waktu untuk set data:

Konsol

  1. Di panel Explorer, luaskan project Anda dan pilih set data.
  2. Luaskan opsi Tindakan dan klik Buka.
  3. Di panel Detail, klik Edit detail.
  4. Luaskan Opsi lanjutan, lalu pilih Periode perjalanan waktu untuk digunakan.
  5. Klik Save.

SQL

Gunakan pernyataan ALTER SCHEMA SET OPTIONS dengan opsi max_time_travel_hours untuk menentukan periode perjalanan waktu saat mengubah set data. Nilai max_time_travel_hours harus berupa bilangan bulat yang dinyatakan dalam kelipatan 24 (48, 72, 96, 120, 144, 168) antara 48 (2 hari) dan 168 (7 hari).

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(
      max_time_travel_hours = HOURS);
    

    Ganti kode berikut:

    • DATASET_NAME: nama set data yang Anda perbarui
    • HOURS dengan durasi periode perjalanan waktu dalam jam.

  3. Klik Run.

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

bq

Gunakan perintah bq update dengan flag --max_time_travel_hours untuk menentukan periode perjalanan waktu saat mengubah set data. Nilai --max_time_travel_hours harus berupa bilangan bulat yang dinyatakan dalam kelipatan 24 (48, 72, 96, 120, 144, 168) antara 48 (2 hari) dan 168 (7 hari).

bq update \
--dataset=true --max_time_travel_hours=HOURS \
PROJECT_ID:DATASET_NAME

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • DATASET_NAME: nama set data yang Anda perbarui
  • HOURS dengan durasi periode perjalanan waktu dalam jam

API

Panggil metode datasets.patch atau datasets.update dengan resource set data yang ditentukan ketika Anda telah menentukan nilai untuk kolom maxTimeTravelHours. Nilai maxTimeTravelHours harus berupa bilangan bulat yang dinyatakan dalam kelipatan 24 (48, 72, 96, 120, 144, 168) antara 48 (2 hari) dan 168 (7 hari).

Memperbarui model penagihan penyimpanan

Anda dapat mengubah model penagihan penyimpanan untuk set data. Tetapkan nilai storage_billing_model ke PHYSICAL untuk menggunakan byte fisik saat menghitung perubahan penyimpanan, atau ke LOGICAL untuk menggunakan byte logis. LOGICAL adalah defaultnya.

Jika Anda mengubah model penagihan set data, perlu waktu 24 jam agar perubahan diterapkan.

Setelah mengubah model penagihan penyimpanan set data, Anda harus menunggu 14 hari sebelum dapat mengubah model penagihan penyimpanan lagi.

Konsol

  1. Di panel Explorer, luaskan project Anda dan pilih set data.
  2. Luaskan opsi Tindakan dan klik Buka.
  3. Di panel Detail, klik Edit detail.
  4. Luaskan Opsi lanjutan, lalu pilih Aktifkan model penagihan penyimpanan fisik untuk menggunakan penagihan penyimpanan fisik, atau batalkan pilihan untuk menggunakan penagihan penyimpanan logis.
  5. Klik Save.

SQL

Untuk memperbarui model penagihan untuk set data, gunakan pernyataan ALTER SCHEMA SET OPTIONS dan tetapkan opsi storage_billing_model:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(
     storage_billing_model = 'BILLING_MODEL');
    

    Ganti kode berikut:

    • DATASET_NAME dengan nama set data yang Anda ubah
    • BILLING_MODEL dengan jenis penyimpanan yang ingin Anda gunakan, LOGICAL atau PHYSICAL

  3. Klik Run.

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

Untuk memperbarui model penagihan penyimpanan bagi semua set data dalam sebuah project, gunakan kueri SQL berikut untuk setiap region, tempat set data berada:

FOR record IN
 (SELECT CONCAT(catalog_name, '.', schema_name) AS dataset_path
 FROM PROJECT_ID.region-REGION.INFORMATION_SCHEMA.SCHEMATA)
DO
 EXECUTE IMMEDIATE
   "ALTER SCHEMA `" || record.dataset_path || "` SET OPTIONS(storage_billing_model = 'BILLING_MODEL')";
END FOR;

Ganti kode berikut:

  • PROJECT_ID dengan project ID Anda
  • REGION dengan penentu wilayah
  • BILLING_MODEL dengan jenis penyimpanan yang ingin Anda gunakan, LOGICAL atau PHYSICAL

bq

Untuk memperbarui model penagihan untuk set data, gunakan perintah bq update dan tetapkan flag --storage_billing_model:

bq update -d --storage_billing_model=BILLING_MODEL PROJECT_ID:DATASET_NAME

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • DATASET_NAME: nama set data yang Anda perbarui
  • BILLING_MODEL: jenis penyimpanan yang ingin Anda gunakan, LOGICAL atau PHYSICAL

API

Panggil metode datasets.update dengan resource set data yang ditentukan tempat kolom storageBillingModel ditetapkan.

Contoh berikut menunjukkan cara memanggil datasets.update menggunakan curl:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID -d '{"datasetReference": {"projectId": "PROJECT_ID", "datasetId": "DATASET_NAME"}, "storageBillingModel": "BILLING_MODEL"}'

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • DATASET_NAME: nama set data yang Anda perbarui
  • BILLING_MODEL: jenis penyimpanan yang ingin Anda gunakan, LOGICAL atau PHYSICAL

Keamanan set data

Untuk mengontrol akses ke set data di BigQuery, lihat Mengontrol akses ke set data. Untuk informasi tentang enkripsi data, lihat Enkripsi dalam penyimpanan.

Langkah selanjutnya