管理資料集

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

重新命名資料集

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

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

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

  3. 在新的資料集中重新建立視圖

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

複製資料集

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

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

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

  3. 在新的資料集中重新建立視圖

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

刪除資料集

刪除資料集的方法如下:

  • 使用 GCP 主控台或 BigQuery 傳統網頁版 UI
  • 使用 CLI 指令 bq rm
  • 呼叫 datasets.delete API 方法。

必要權限

如要刪除資料集,您必須具備資料集層級的 OWNER 存取權,或者必須獲指派為擁有 bigquery.datasets.delete 權限的專案層級身分與存取權管理角色。如果資料集包含資料表,則還需要具備 bigquery.tables.delete 權限。以下是擁有 bigquery.datasets.deletebigquery.tables.delete 權限的預先定義專案層級身分與存取權管理角色:

此外,因為 bigquery.user 角色擁有 bigquery.datasets.create 權限,所以接受 bigquery.user 角色指派的使用者可以刪除該使用者建立的任何資料集。當接受 bigquery.user 角色指派的使用者建立資料集時,該使用者即被授予該資料集的 OWNER 存取權。 OWNER 存取權可讓使用者完全控管該資料集。

如要深入瞭解 BigQuery 中的身分與存取權管理角色和權限,請參閱存取權控制一文。如要深入瞭解資料集層級角色,請參閱資料集的原始角色

刪除資料集

當您使用網頁版 UI 刪除資料集時,資料集中的資料表 (和其中所包含的資料) 都會遭到刪除。當您使用 CLI 刪除資料集時,必須使用 -r 標記來刪除資料集的資料表。

刪除資料集後,即無法復原、還原或取消刪除。刪除資料集後即無法更改。

如何刪除資料集:

主控台

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

    刪除資料集

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

傳統版 UI

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

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

    • 針對資料集 ID,輸入要刪除之資料集的名稱。
    • 按一下 [OK] (確定)。

      刪除資料集

指令列

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

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

bq rm -r -f -d [PROJECT_ID]:[DATASET]

其中:

  • [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');

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

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

  // Create a client
  const bigqueryClient = new BigQuery();

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

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} deleted.`);
}
deleteDataset();

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

後續步驟

  • 要進一步瞭解如何建立資料集,請參閱建立資料集一文。
  • 要進一步瞭解如何更新資料集,請參閱更新資料集相關頁面。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁