Mengelola set data

Dokumen ini menjelaskan cara membuat ulang set data di lokasi lain, mengamankan set data, menghapus set data, dan memulihkan tabel dari set data yang dihapus di BigQuery. Untuk mengetahui informasi tentang cara memulihkan (atau membatalkan penghapusan) set data yang dihapus, lihat Memulihkan set data yang dihapus.

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.

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.

Menghapus set data

Berikan peran ini untuk menghapus set data.

Untuk mendapatkan izin yang diperlukan untuk menghapus set data, minta administrator untuk memberi Anda peran IAM BigQuery Data Owner (roles/bigquery.dataOwner) pada project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk menghapus set data. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menghapus set data:

  • bigquery.datasets.delete di project
  • bigquery.tables.delete di project

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

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.

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

  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 Managed Service for Apache Airflow 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 Cloud de Confiance , tabel dan tampilan dalam set data, termasuk datanya, akan dihapus secara otomatis. Namun, saat menggunakan metode lain, Anda harus mengosongkan set data terlebih dahulu atau menentukan flag, parameter, atau kata kunci yang sesuai yang memaksa penghapusan konten set data.

Jika Anda mencoba menghapus set data yang tidak kosong tanpa tanda atau parameter yang tepat, operasi akan gagal dengan error berikut: Dataset project:dataset is still in use.

Menghapus set data akan membuat satu entri log audit untuk penghapusan set data. Tindakan ini tidak membuat entri log terpisah untuk setiap tabel yang dihapus dalam set data.

Untuk menghapus set data, pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel kiri, klik Explorer:

    Tombol yang ditandai untuk panel Explorer.

  3. Di panel Explorer, luaskan project Anda, klik Set Data, lalu klik set data.

  4. Di panel detail, klik Hapus.

  5. 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 Cloud de Confiance , 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 mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel 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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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 Memulihkan set data yang dihapus.

  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 di set data yang dihapus, kueri tampilan INFORMATION_SCHEMA.TABLE_STORAGE set data dalam jangka waktu perjalanan.

Memulihkan set data yang dihapus

Untuk mempelajari cara memulihkan (atau membatalkan penghapusan) set data yang dihapus, lihat Memulihkan set data yang dihapus.

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