管理資料集

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

重新命名資料集

目前,您無法變更現有資料集的名稱,也無法複製資料集並為其重新命名。如果您需要變更資料集名稱,請按照下列步驟重新建立資料集:

  1. 建立新的資料集並指定新的名稱。

  2. 從舊有資料集複製資料表到新的資料集。

  3. 將檢視表複製到新的資料集,或是在新的資料集中重新建立檢視表。

  4. 刪除舊有資料集,以免產生額外的儲存空間費用。

複製資料集

目前,您無法複製資料集。請改為按照下列步驟重新建立資料集:

  1. 建立新的資料集。因為每個專案中的資料集名稱不得重複,因此如果要在同一個專案中重新建立資料集就必須為其指派新的名稱。

  2. 從舊有資料集複製資料表到新的資料集。

  3. 將檢視表複製到新的資料集,或是在新的資料集中重新建立檢視表。

  4. 刪除舊有資料集,以免產生額外的儲存空間費用。

刪除資料集

刪除資料集的方法如下:

  • 使用 GCP 主控台或 BigQuery 傳統網頁版 UI
  • 使用 CLI 指令 bq rm
  • 呼叫 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 角色和權限,請參閱存取權控管一文。

刪除資料集

在您使用 GCP Console 或傳統網頁版 UI 刪除資料集時,系統會刪除資料集中的資料表和檢視表 (與當中資料)。使用 CLI 刪除資料集時,您必須透過 -r 標記刪除資料集的資料表和檢視表。

如要刪除資料集,請按照下列指示操作:

主控台

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

    刪除資料集

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

傳統版 UI

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

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

    • 針對資料集 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

後續步驟

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

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

這個網頁