管理資料集

本文件說明如何在 BigQuery 中管理資料集。建立資料集後,您可以透過下列方式管理資料集:

重新命名資料集

目前,您無法變更現有資料集的名稱,但可以複製資料集。請參閱複製資料集

複製資料集

如要查看複製資料集的步驟 (包括跨地區),請參閱複製資料集

移動資料集

如要手動將資料集移至其他位置,請按照下列流程操作:

  1. 從 BigQuery 資料表匯出資料至單一地區或多地區 Cloud Storage 值區,而且這個值區必須跟資料集位於相同位置。舉例來說,如果您的資料集位在歐盟的多地區位置,您就必須把資料匯出到歐盟的單一地區或多地區值區。

    從 BigQuery 中匯出資料並不需要付費,但是在 Cloud Storage 儲存匯出的資料則會產生費用。BigQuery 匯出作業會受到匯出工作的相關限制。

  2. 從您的 Cloud Storage 值區中,將資料複製或移動至新位置的單一地區或多地區值區。舉例來說,如果您要將資料從美國多地區位置移到東京的單一地區位置,則必須把資料移轉到東京的地區值區。如要瞭解如何移轉 Cloud Storage 物件,請參閱 Cloud Storage 說明文件中的重新命名、複製及移動物件章節。

    請注意,在不同地區之間移轉資料將會產生 Cloud Storage 網路輸出費用

  3. 將資料轉移至新位置的 Cloud Storage 值區後,請在新位置建立新的 BigQuery 資料集,然後將資料從 Cloud Storage 值區載入 BigQuery。

    將資料載入 BigQuery 無須支付費用,但將資料儲存於 Cloud Storage 則須支付費用,直到您刪除資料或值區為止。載入資料之後,將資料儲存至 BigQuery 亦須支付相關費用。將資料載入 BigQuery 時會受到載入工作的相關限制。

如要進一步瞭解如何使用 Cloud Storage 來儲存及移動大型資料集,請參閱搭配大數據使用 Cloud Storage 一文。

刪除資料集

刪除資料集的方法如下:

  • 使用 Cloud Console 或 BigQuery 傳統網頁版 UI
  • 使用 bq rm CLI 指令
  • 呼叫 datasets.delete API 方法
  • 使用用戶端程式庫

所需權限

您至少必須擁有 bigquery.datasets.delete 權限,才能刪除資料集。如果資料集中包含資料表或檢視表,您還必須擁有 bigquery.tables.delete 權限,才能刪除資料集。以下是包含 bigquery.datasets.deletebigquery.tables.delete 權限的預先定義 Cloud IAM 角色:

  • bigquery.dataOwner
  • bigquery.admin

此外,當具備 bigquery.datasets.create 權限的使用者建立資料集時,會獲得該資料集的 bigquery.dataOwner 存取權。bigquery.dataOwner 存取權可讓使用者刪除他們建立的資料集和資料表。

如要進一步瞭解 BigQuery 中的 Cloud IAM 角色和權限,請參閱預先定義的角色與權限一文。

刪除資料集

使用 Cloud Console 或傳統網頁版 UI 刪除資料集時,資料集中的資料表和檢視表 (及其包含的資料) 也會一併刪除。使用 CLI 刪除資料集時,您必須使用 -r 標記來刪除資料集的資料表和檢視表。

如何刪除資料集:

主控台

  1. 從「Resources」(資源) 窗格中選取要刪除的資料集,然後按一下視窗右側的 [Delete dataset] (刪除資料集)。

    刪除資料集

  2. 在「Delete dataset」(刪除資料集) 對話方塊的文字方塊中輸入資料集名稱,然後按一下 [Delete] (刪除)。

傳統版 UI

  1. 在導覽列中按一下資料集名稱旁的向下箭號圖示 向下箭號圖示,然後按一下 [Delete dataset] (刪除資料集)。

  2. 在「Delete Dataset」(刪除資料集) 對話方塊中:

    • 在「Dataset ID」(資料集 ID) 部分,輸入要刪除之資料集的名稱。
    • 按一下 [OK] (確定)。

CLI

使用 bq rm 指令並搭配 (選用) --dataset-d 捷徑標記來刪除資料集。使用 CLI 移除資料集時,您必須確認指令。您可以使用 -f 標記來略過確認程序。

另外,如果資料集中包含資料表,您就必須使用 -r 標記來移除資料集中的所有資料表。如要刪除非預設專案中的資料表,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset

bq rm -r -f -d <var>project_id:dataset</var>

其中:

  • 「project_id」是您的專案 ID。
  • 「dataset」是您要刪除的資料集名稱。

範例:

輸入下列指令,即可移除預設專案中的 mydataset 及其所有的資料表。這個指令會使用選用的 -d 捷徑。

bq rm -r -d mydataset

當系統提示時,請輸入 y,然後按下 Enter 鍵。

輸入下列指令,即可從 myotherproject 中移除 mydataset 及其中的所有資料表。這個指令不會使用選用的 -d 捷徑。-f 標記可用來略過確認程序。

bq rm -r -f myotherproject:mydataset

API

呼叫 datasets.delete 方法來刪除資料集,然後將 deleteContents 參數設為 true 來刪除當中的資料表。

Go

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫一文中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

if err := client.Dataset(datasetID).Delete(ctx); err != nil {
	return fmt.Errorf("Failed to delete dataset: %v", err)
}

Java

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

DatasetId datasetId = DatasetId.of(projectId, datasetName);
boolean deleted = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
if (deleted) {
  // the dataset was deleted
} else {
  // the dataset was not found
}

Node.js

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件

// 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

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 PHP 操作說明進行操作。詳情請參閱 BigQuery PHP API 參考說明文件

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

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫一文中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

from google.cloud import bigquery

# TODO(developer): 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)

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

Ruby

在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫一文中的 Ruby 設定操作說明進行操作。詳情請參閱 BigQuery Ruby API 參考說明文件

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

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁