Mengelola set data

Dokumen ini menjelaskan cara menyalin set data, membuat ulang set data di lokasi lain, mengamankan set data, menghapus set data, memulihkan tabel dari set data yang dihapus, dan membatalkan penghapusan set data di BigQuery.

Sebagai administrator BigQuery, Anda dapat mengatur dan mengontrol akses ke tabel dan tampilan yang digunakan analis. Untuk informasi selengkapnya tentang set data, lihat Pengantar set data.

Anda tidak dapat mengubah nama set data yang ada atau memindahkan set data setelah dibuat. Sebagai solusi untuk mengubah nama set data, Anda dapat menyalin set data dan mengubah nama set data tujuan. Untuk memindahkan set data, Anda dapat mengikuti salah satu metode berikut:

Peran yang diperlukan

Bagian ini menjelaskan peran dan izin yang Anda perlukan untuk mengelola set data. Jika set data sumber atau tujuan berada dalam project yang sama dengan yang digunakan untuk menyalin, Anda tidak memerlukan izin atau peran tambahan pada set data tersebut.

Untuk mendapatkan izin yang Anda perlukan untuk mengelola set data, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk mengelola set data. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola set data:

  • Salin set data:
    • bigquery.transfers.update di project tujuan
    • bigquery.jobs.create di project tujuan
    • bigquery.datasets.get di set data sumber dan tujuan
    • bigquery.tables.list di set data sumber dan tujuan
    • bigquery.datasets.update di set data tujuan
    • bigquery.tables.create di set data tujuan
  • Menghapus set data:
    • bigquery.datasets.delete dalam project
    • bigquery.tables.delete dalam project
  • Memulihkan set data yang dihapus:
    • bigquery.datasets.create dalam project
    • bigquery.datasets.get di set data

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Pengantar IAM.

Salin set data

Anda dapat menyalin set data, termasuk data yang dipartisi dalam satu region atau di seluruh region, tanpa mengekstrak, memindahkan, atau memuat ulang data ke BigQuery. BigQuery menggunakan BigQuery Data Transfer Service di backend untuk menyalin set data. Untuk pertimbangan lokasi saat Anda mentransfer data, lihat Transfer dan lokasi data.

Untuk setiap konfigurasi penyalinan set data, Anda dapat menjalankan satu transfer yang aktif pada satu waktu. Proses transfer tambahan dimasukkan ke dalam antrean. Jika menggunakan konsol Google Cloud, Anda dapat menjadwalkan salinan berulang, dan mengonfigurasi notifikasi email atau Pub/Sub dengan BigQuery Data Transfer Service.

Batasan

Batasan berikut berlaku saat Anda menyalin set data:

  • Anda tidak dapat menyalin resource berikut dari set data sumber:

    • • Tabel virtual
    • Rutinitas, termasuk UDF.
    • Tabel eksternal.
    • Tabel pengambilan data perubahan (CDC) jika tugas penyalinan berada di seluruh region. Penyalinan tabel CDC dalam region yang sama didukung.
    • Tugas penyalinan tabel lintas region tidak didukung untuk tabel yang dienkripsi dengan kunci terenkripsi yang dikelola pelanggan (CMEK) saat set data tujuan tidak dienkripsi dengan CMEK dan tidak ada CMEK yang diberikan. Penyalinan tabel dengan enkripsi default di seluruh region didukung.

      Anda dapat menyalin semua tabel terenkripsi dalam region yang sama, termasuk tabel terenkripsi dengan CMEK.

  • Anda tidak dapat menggunakan resource berikut sebagai set data tujuan untuk tugas penyalinan:

    • Penyimpanan yang dioptimalkan untuk operasi tulis.
    • Set data yang dienkripsi dengan CMEK jika tugas penyalinan berada di seluruh region dan tabel sumber tidak dienkripsi dengan CMEK.

      Namun, tabel yang dienkripsi dengan CMEK diizinkan sebagai tabel tujuan saat menyalin dalam region yang sama.

  • Frekuensi minimum antar-tugas penyalinan adalah 12 jam.

  • Menambahkan data ke tabel yang dipartisi dalam set data tujuan tidak didukung.

  • Jika tabel ada dalam set data sumber dan set data tujuan, dan tabel sumber belum berubah sejak salinan terakhir yang berhasil, tabel tersebut akan dilewati. Tabel sumber akan dilewati meskipun kotak centang Timpa tabel tujuan dipilih.

  • Saat memotong tabel di set data tujuan, tugas penyalinan set data tidak mendeteksi perubahan apa pun yang dilakukan pada resource di set data tujuan sebelum memulai tugas penyalinan. Tugas penyalinan set data akan menimpa semua data di set data tujuan, termasuk tabel dan skema.

  • Tabel tujuan mungkin tidak mencerminkan perubahan yang dibuat pada tabel sumber setelah tugas penyalinan dimulai.

  • Penyalinan set data tidak didukung di region BigQuery Omni.

  • Untuk menyalin set data ke project di perimeter layanan Kontrol Layanan VPC lain, Anda harus menetapkan aturan traffic keluar berikut:

    • Dalam konfigurasi perimeter layanan Kontrol Layanan VPC project tujuan, akun utama IAM harus memiliki metode berikut:

      • bigquery.datasets.get
      • bigquery.tables.list
      • bigquery.tables.get,
      • bigquery.tables.getData
    • Dalam konfigurasi perimeter layanan Kontrol Layanan VPC project sumber, akun utama IAM yang digunakan harus memiliki metode yang ditetapkan ke All Methods.

Menyalin set data

Pilih salah satu opsi berikut:

Konsol

  1. Aktifkan BigQuery Data Transfer Service untuk set data tujuan Anda.

    Mengaktifkan BigQuery Data Transfer Service API

  2. Pastikan Anda memiliki peran yang diperlukan.

    Jika ingin menyiapkan notifikasi run transfer untuk Pub/Sub (Opsi 2 nanti dalam langkah-langkah ini), Anda harus memiliki izin pubsub.topics.setIamPolicy.

    Jika Anda hanya menyiapkan notifikasi email, izin Pub/Sub tidak diperlukan. Untuk mengetahui informasi selengkapnya, lihat notifikasi menjalankan BigQuery Data Transfer Service.

  3. Buat set data BigQuery di region yang sama atau berbeda dari set data sumber Anda.

Opsi 1: Menggunakan fungsi salin BigQuery

Untuk membuat transfer satu kali, gunakan fungsi salin BigQuery:

  1. Buka halaman BigQuery.

    Buka BigQuery

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

  3. Di bagian Dataset info, klik Copy, lalu lakukan hal berikut:

    1. Di kolom Dataset, buat set data baru atau pilih ID set data yang ada dari daftar.

      Nama set data dalam project harus unik. Project dan set data dapat berada di region yang berbeda, tetapi tidak semua region didukung untuk penyalinan set data lintas region.

      Di kolom Location, lokasi set data sumber akan ditampilkan.

    2. Opsional: Untuk menimpa data dan skema tabel tujuan dengan tabel sumber, centang kotak Timpa tabel tujuan. Tabel sumber dan tujuan harus memiliki skema partisi yang sama.

    3. Untuk menyalin set data, klik Copy.

Opsi 2: Gunakan BigQuery Data Transfer Service

Untuk menjadwalkan salinan berulang dan mengonfigurasi notifikasi email atau Pub/Sub, gunakan BigQuery Data Transfer Service di konsol Google Cloud untuk project tujuan:

  1. Buka halaman Transfer data.

    Buka Transfer data

  2. Klik Buat transfer.

  3. Dalam daftar Source, pilih Dataset Copy.

  4. Di kolom Nama tampilan, masukkan nama untuk operasi transfer Anda.

  5. Di bagian Opsi jadwal, lakukan tindakan berikut:

    1. Untuk Frekuensi berulang, pilih opsi seberapa sering transfer dijalankan:

      Jika Anda memilih Kustom, masukkan frekuensi kustom—misalnya, every day 00:00. Untuk informasi selengkapnya, lihat Memformat jadwal.

    2. Untuk Tanggal mulai dan waktu proses, masukkan tanggal dan waktu untuk memulai transfer. Jika Anda memilih Mulai sekarang, opsi ini akan dinonaktifkan.

  6. Di bagian Destination settings, pilih set data tujuan untuk menyimpan data transfer Anda. Anda juga dapat mengklik BUAT SET DATA BARU untuk membuat set data baru sebelum memilihnya untuk transfer ini.

  7. Di bagian Detail sumber data, masukkan informasi berikut:

    1. Untuk Set data sumber, masukkan ID set data yang ingin Anda salin.
    2. Untuk Project sumber, masukkan ID project set data sumber Anda.
  8. Untuk menimpa data dan skema tabel tujuan dengan tabel sumber, pilih kotak centang Timpa tabel tujuan. Tabel sumber dan tujuan harus memiliki skema partisi yang sama.

  9. Di menu Service Account, pilih service account dari akun layanan yang terkait dengan project Google Cloud Anda. Anda dapat mengaitkan akun layanan dengan transfer, bukan menggunakan kredensial pengguna. Untuk mengetahui informasi selengkapnya tentang cara menggunakan akun layanan dengan transfer data, lihat Menggunakan akun layanan.

  10. Opsional: Di bagian Opsi notifikasi, lakukan hal berikut:

    • Untuk mengaktifkan notifikasi email, klik tombol. Saat Anda mengaktifkan opsi ini, pemilik konfigurasi transfer akan menerima notifikasi email saat proses transfer gagal.
    • Untuk mengaktifkan notifikasi Pub/Sub, klik tombol, lalu pilih nama topic dari daftar atau klik Create a topic. Opsi ini mengatur notifikasi operasi Pub/Sub untuk transfer Anda.
  11. Klik Simpan.

bq

  1. Aktifkan BigQuery Data Transfer Service untuk set data tujuan Anda.

  2. Pastikan Anda memiliki peran yang diperlukan.

  3. Untuk membuat set data BigQuery, gunakan perintah bq mk dengan flag pembuatan set data --dataset dan flag location:

    bq mk \
      --dataset \
      --location=LOCATION \
      PROJECT:DATASET

    Ganti kode berikut:

    • LOCATION: lokasi tempat Anda ingin menyalin set data
    • PROJECT: project ID set data target
    • DATASET: nama set data target
  4. Untuk menyalin set data, gunakan perintah bq mk dengan flag pembuatan transfer --transfer_config dan flag --data_source. Anda harus menetapkan tanda --data_source ke cross_region_copy. Untuk mengetahui daftar lengkap nilai yang valid untuk tanda --data_source, lihat tanda transfer konfigurasi dalam referensi alat command line bq.

    bq mk \
      --transfer_config \
      --project_id=PROJECT \
      --data_source=cross_region_copy \
      --target_dataset=DATASET \
      --display_name=NAME \
     --service_account_name=SERCICE_ACCOUNT \
      --params='PARAMETERS'

    Ganti kode berikut:

    • NAME: nama tampilan untuk tugas penyalinan atau konfigurasi transfer

    • SERVICE_ACCOUNT: nama akun layanan yang digunakan untuk melakukan autentikasi transfer Anda. Akun layanan harus dimiliki oleh project_id yang sama yang digunakan untuk membuat transfer dan harus memiliki semua izin yang diperlukan.

    • PARAMETERS: parameter untuk konfigurasi transfer dalam format JSON

      Parameter untuk konfigurasi salinan set data mencakup hal berikut:

      • source_dataset_id: ID set data sumber yang ingin Anda salin
      • source_project_id: ID project tempat set data sumber Anda berada
      • overwrite_destination_table: flag opsional yang memungkinkan Anda memotong tabel salinan sebelumnya dan memuat ulang semua data

      Tabel sumber dan tujuan harus memiliki skema partisi yang sama.

    Contoh berikut menunjukkan format parameter, berdasarkan lingkungan sistem Anda:

    • Linux: gunakan tanda kutip tunggal untuk mencakup string JSON–misalnya:

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • Command line Windows: gunakan tanda kutip ganda untuk mencakup string JSON, dan meng-escape tanda kutip ganda dalam string dengan garis miring terbalik–misalnya:

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell: menggunakan tanda kutip tunggal untuk mencakup string JSON, dan menghindari tanda kutip ganda dalam string dengan garis miring terbalik, misalnya:

      '{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}'
      

    Misalnya, perintah berikut akan membuat konfigurasi salinan set data yang diberi nama My Transfer dengan set data target yang diberi nama mydataset dan project dengan ID myproject.

    bq mk \
      --transfer_config \
      --project_id=myproject \
      --data_source=cross_region_copy \
      --target_dataset=mydataset \
      --display_name='My Transfer' \
      --params='{
          "source_dataset_id":"123_demo_eu",
          "source_project_id":"mysourceproject",
          "overwrite_destination_table":"true"
          }'

API

  1. Aktifkan BigQuery Data Transfer Service untuk set data tujuan Anda.

  2. Pastikan Anda memiliki peran yang diperlukan.

  3. Untuk membuat set data BigQuery, panggil metode datasets.insert dengan resource set data yang ditentukan.

  4. Untuk menyalin set data, gunakan metode projects.locations.transferConfigs.create dan berikan instance resource TransferConfig.

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.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to copy dataset from another gcp project
public class CopyDataset {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String destinationProjectId = "MY_DESTINATION_PROJECT_ID";
    final String destinationDatasetId = "MY_DESTINATION_DATASET_ID";
    final String sourceProjectId = "MY_SOURCE_PROJECT_ID";
    final String sourceDatasetId = "MY_SOURCE_DATASET_ID";
    Map<String, Value> params = new HashMap<>();
    params.put("source_project_id", Value.newBuilder().setStringValue(sourceProjectId).build());
    params.put("source_dataset_id", Value.newBuilder().setStringValue(sourceDatasetId).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(destinationDatasetId)
            .setDisplayName("Your Dataset Copy Name")
            .setDataSourceId("cross_region_copy")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    copyDataset(destinationProjectId, transferConfig);
  }

  public static void copyDataset(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("Copy dataset created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Copy dataset was not created." + ex.toString());
    }
  }
}

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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=destination_dataset_id,
    display_name="Your Dataset Copy Name",
    data_source_id="cross_region_copy",
    params={
        "source_project_id": source_project_id,
        "source_dataset_id": source_dataset_id,
    },
    schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
    parent=transfer_client.common_project_path(destination_project_id),
    transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")

Untuk menghindari biaya penyimpanan tambahan, pertimbangkan untuk menghapus set data sebelumnya.

Lihat tugas penyalinan set data

Untuk melihat status dan detail tugas penyalinan set data di konsol Google Cloud, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman Transfer data.

    Buka Transfer data

  2. Pilih transfer yang ingin Anda lihat detail transfernya, lalu lakukan tindakan berikut:

    1. Di halaman Detail transfer, pilih proses transfer.

    2. Untuk memuat ulang, klik Refresh.

Membuat ulang set data di lokasi lain

Untuk memindahkan set data secara manual dari satu lokasi ke lokasi lain, ikuti langkah-langkah berikut:

  1. Ekspor data dari tabel BigQuery ke bucket Cloud Storage di lokasi yang sama dengan set data Anda atau di lokasi yang terdapat dalam lokasi set data Anda. Misalnya, jika set data Anda berada di lokasi multi-region EU, Anda dapat mengekspor data ke lokasi europe-west1 Belgia, yang merupakan bagian dari Uni Eropa.

    Ekspor data dari BigQuery tidak dikenai biaya, tetapi Anda akan dikenai biaya untuk menyimpan data yang diekspor di Cloud Storage. Ekspor BigQuery dikenai batas untuk tugas ekspor.

  2. Salin atau pindahkan data dari bucket Cloud Storage yang diekspor ke bucket baru yang Anda buat di lokasi tujuan. Misalnya, jika Anda memindahkan data dari multi-region US ke region asia-northeast1 Tokyo, Anda harus mentransfer data ke bucket yang Anda buat di Tokyo. Untuk informasi tentang cara mentransfer objek Cloud Storage, lihat Menyalin, mengganti nama, dan memindahkan objek dalam dokumentasi Cloud Storage.

    Mentransfer data antar-region akan menimbulkan biaya traffic keluar jaringan di Cloud Storage.

  3. Buat set data BigQuery baru di lokasi baru, lalu muat data Anda dari bucket Cloud Storage ke dalam set data baru.

    Anda tidak dikenai biaya untuk memuat data ke BigQuery, tetapi Anda akan dikenai biaya untuk penyimpanan data di Cloud Storage sampai Anda menghapus data atau bucket. Anda juga dikenai biaya untuk penyimpanan data di BigQuery setelah dimuat. Pemuatan data ke BigQuery tunduk pada batas tugas pemuatan.

Anda juga dapat menggunakan Cloud Composer untuk memindahkan dan menyalin set data besar secara terprogram.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Cloud Storage untuk menyimpan dan memindahkan set data besar, lihat Menggunakan Cloud Storage dengan big data.

Mengamankan 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.

Menghapus set data

Saat Anda menghapus set data menggunakan Konsol Google Cloud, tabel dan tampilan dalam set data, termasuk datanya, akan dihapus. Saat menghapus set data menggunakan alat command line bq, Anda harus menggunakan flag -r untuk menghapus tabel dan tampilan.

Untuk menghapus set data, pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

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

  3. Luaskan opsi Tindakan, lalu klik Hapus.

  4. Pada dialog Delete dataset, ketik delete pada kolom, lalu klik Delete.

SQL

Untuk menghapus set data, gunakan pernyataan DDL DROP SCHEMA.

Contoh berikut menghapus set data bernama mydataset:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    DROP SCHEMA IF EXISTS mydataset;

    Secara default, tindakan ini hanya berfungsi untuk menghapus set data yang kosong. Untuk menghapus set data dan semua kontennya, gunakan kata kunci CASCADE:

    DROP SCHEMA IF EXISTS mydataset CASCADE;

  3. Klik Run.

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

bq

Gunakan perintah bq rm dengan flag --dataset atau -d, yang bersifat opsional. Jika set data Anda berisi tabel, Anda harus menggunakan flag -r untuk menghapus semua tabel dalam set data. Jika Anda menggunakan flag -r, Anda dapat menghilangkan flag --dataset atau -d.

Setelah Anda menjalankan perintah, sistem akan meminta konfirmasi. Anda dapat menggunakan flag -f untuk melewati konfirmasi.

Jika Anda menghapus tabel dalam project selain project default Anda, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET.

bq rm -r -f -d PROJECT_ID:DATASET

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • DATASET: nama set data yang Anda hapus

Contoh:

Masukkan perintah berikut untuk menghapus set data yang bernama mydataset dan semua tabel di dalamnya dari project default Anda. Perintah ini menggunakan flag -d.

bq rm -r -d mydataset

Saat diminta, ketik y dan tekan enter.

Masukkan perintah berikut untuk menghapus mydataset dan semua tabel di dalamnya dari myotherproject. Perintah ini tidak menggunakan flag -d opsional. Flag -f digunakan untuk melewati konfirmasi.

bq rm -r -f myotherproject:mydataset

Anda dapat menggunakan perintah bq ls untuk mengonfirmasi bahwa set data telah dihapus.

API

Panggil metode datasets.delete untuk menghapus set data dan tetapkan parameter deleteContents ke true untuk menghapus tabel di dalamnya.

C#

Contoh kode berikut akan menghapus set data yang kosong.

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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.

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

public class BigQueryDeleteDataset
{
    public void DeleteDataset(
        string projectId = "your-project-id",
        string datasetId = "your_empty_dataset"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Delete a dataset that does not contain any tables
        client.DeleteDataset(datasetId: datasetId);
        Console.WriteLine($"Dataset {datasetId} deleted.");
    }
}

Contoh kode berikut menghapus set data dan semua kontennya:

// Copyright(c) 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//

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

public class BigQueryDeleteDatasetAndContents
{
    public void DeleteDatasetAndContents(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_with_tables"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Use the DeleteDatasetOptions to delete a dataset and its contents
        client.DeleteDataset(
            datasetId: datasetId,
            options: new DeleteDatasetOptions() { DeleteContents = true }
        );
        Console.WriteLine($"Dataset {datasetId} and contents 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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
import (
	"context"
	"fmt"

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

// deleteDataset demonstrates the deletion of an empty dataset.
func deleteDataset(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()

	// To recursively delete a dataset and contents, use DeleteWithContents.
	if err := client.Dataset(datasetID).Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	return nil
}

Java

Contoh kode berikut akan menghapus set data yang kosong.

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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetDeleteOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

public class DeleteDataset {

  public static void runDeleteDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDataset(projectId, datasetName);
  }

  public static void deleteDataset(String projectId, 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();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      boolean success = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted. \n" + e.toString());
    }
  }
}

Contoh kode berikut menghapus set data dan semua kontennya:

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquery;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

// Sample to delete dataset with contents.
public class DeleteDatasetAndContents {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDatasetAndContents(projectId, datasetName);
  }

  public static void deleteDatasetAndContents(String projectId, 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();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      // Use the force parameter to delete a dataset and its contents
      boolean success = bigquery.delete(datasetId, BigQuery.DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted with contents successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted with contents. \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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteDataset() {
  // Deletes a dataset named "my_dataset".

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

  // Create a reference to the existing dataset
  const dataset = bigquery.dataset(datasetId);

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} 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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
use Google\Cloud\BigQuery\BigQueryClient;

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

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

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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.

from google.cloud import bigquery

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

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

# Use the delete_contents parameter to delete a dataset and its contents.
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(
    dataset_id, delete_contents=True, not_found_ok=True
)  # Make an API request.

print("Deleted dataset '{}'.".format(dataset_id))

Ruby

Contoh kode berikut akan menghapus set data yang kosong.

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.

Instal klien Python untuk BigQuery Data Transfer API dengan pip install google-cloud-bigquery-datatransfer. Kemudian, buat konfigurasi transfer untuk menyalin set data.
require "google/cloud/bigquery"

def delete_dataset dataset_id = "my_empty_dataset"
  bigquery = Google::Cloud::Bigquery.new

  # Delete a dataset that does not contain any tables
  dataset = bigquery.dataset dataset_id
  dataset.delete
  puts "Dataset #{dataset_id} deleted."
end

Contoh kode berikut menghapus set data dan semua kontennya:

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require "google/cloud/bigquery"

def delete_dataset_and_contents dataset_id = "my_dataset_with_tables"
  bigquery = Google::Cloud::Bigquery.new

  # Use the force parameter to delete a dataset and its contents
  dataset = bigquery.dataset dataset_id
  dataset.delete force: true
  puts "Dataset #{dataset_id} and contents deleted."
end

Memulihkan tabel dari set data yang dihapus

Anda dapat memulihkan tabel dari set data yang telah dihapus yang berada dalam jangka waktu perjalanan set data. Untuk memulihkan seluruh set data, lihat membatalkan penghapusan set data.

  1. Buat set data dengan nama dan lokasi yang sama seperti aslinya.
  2. Pilih stempel waktu dari sebelum set data asli dihapus menggunakan format milidetik sejak epoch–misalnya, 1418864998000.
  3. Salin tabel originaldataset.table1 pada waktu 1418864998000 ke dalam set data baru:

    bq cp originaldataset.table1@1418864998000 mydataset.mytable
    

    Untuk menemukan nama tabel yang tidak kosong yang ada dalam set data yang dihapus, buat kueri tampilan INFORMATION_SCHEMA.TABLE_STORAGE set data dalam jangka waktu perjalanan.

Membatalkan penghapusan set data

Anda dapat membatalkan penghapusan set data untuk memulihkannya ke status saat dihapus. Anda hanya dapat membatalkan penghapusan set data yang berada dalam periode perjalanan waktu. Pemulihan ini mencakup semua objek yang terdapat dalam set data, properti set data, dan setelan keamanan. Untuk resource yang tidak dipulihkan, lihat Batasan penghapusan set data.

Batasan membatalkan penghapusan set data

  • Set data yang dipulihkan mungkin mereferensikan akun keamanan yang tidak ada lagi.
  • Referensi ke set data yang dihapus dalam set data tertaut tidak dipulihkan dengan menghapus penghapusan. Pelanggan harus berlangganan lagi untuk memulihkan link secara manual.
  • Tag bisnis tidak dipulihkan dengan membatalkan penghapusan.
  • Anda harus memuat ulang tampilan terwujud secara manual dan memberikan otorisasi ulang tampilan yang diotorisasi, set data yang diotorisasi, dan rutinitas yang diotorisasi. Perhatikan bahwa, saat resource yang diotorisasi (tampilan, set data, dan rutinitas) dihapus, perlu waktu hingga 24 jam agar otorisasi dihapus. Jadi, jika Anda menghapus pembatalan penghapusan set data dengan resource yang diotorisasi kurang dari 24 jam setelah penghapusan, mungkin otorisasi ulang tidak diperlukan. Sebagai praktik terbaik, selalu verifikasi otorisasi setelah membatalkan penghapusan resource.

Membatalkan penghapusan set data

Untuk membatalkan penghapusan set data, pilih salah satu opsi berikut:

SQL

Gunakan pernyataan bahasa definisi data (DDL) UNDROP SCHEMA:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    UNDROP SCHEMA DATASET_ID;

    Ganti DATASET_ID dengan set data yang ingin Anda urungkan penghapusannya.

  3. Tentukan lokasi set data yang ingin Anda batalkan penghapusannya.

  4. Klik Run.

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

API

Panggil metode datasets.undelete.

Saat Anda membatalkan penghapusan set data, error berikut mungkin terjadi:

  • ALREADY_EXISTS: set data dengan nama yang sama sudah ada di region tempat Anda mencoba membatalkan penghapusan. Anda tidak dapat menggunakan pembatalan penghapusan untuk menimpa atau menggabungkan set data.
  • NOT_FOUND: set data yang Anda coba pulihkan telah melewati periode perjalanan waktunya, set data tersebut tidak pernah ada, atau Anda tidak menentukan lokasi yang benar untuk set data tersebut.
  • ACCESS_DENIED: Anda tidak memiliki izin yang benar untuk membatalkan penghapusan set data ini.

Kuota

Untuk mengetahui informasi tentang kuota penyalinan, lihat Menyalin tugas. Penggunaan untuk tugas penyalinan tersedia di INFORMATION_SCHEMA. Untuk mempelajari cara membuat kueri tampilan INFORMATION_SCHEMA.JOBS, lihat tampilan JOBS.

Harga

Untuk mengetahui informasi harga penyalinan set data, lihat Harga replikasi data.

BigQuery mengirimkan data terkompresi untuk disalin ke berbagai region sehingga data yang ditagih mungkin lebih kecil dari ukuran set data Anda yang sebenarnya. Untuk informasi lebih lanjut, lihat Harga BigQuery.

Langkah berikutnya