刪除標籤

您可以透過以下方式從資料集、資料表或檢視表刪除標籤:

事前準備

授予身分與存取權管理 (IAM) 角色,讓使用者取得執行本文件中各項工作的必要權限。執行工作所需的權限 (如有) 會列在工作內容的「必要權限」部分。

刪除資料集標籤

下列各節會說明刪除資料集標籤的權限和步驟。

所需權限

如要刪除資料集標籤,您必須具備下列 IAM 權限:

  • bigquery.datasets.get
  • bigquery.datasets.update

以下每個預先定義的 IAM 角色都包含刪除資料集標籤所需的權限:

  • roles/bigquery.dataOwner
  • roles/bigquery.admin

此外,如果您擁有 bigquery.datasets.create 權限,就可以刪除所建立資料集的標籤。

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

刪除資料集標籤

如要從資料集中刪除標籤,請選擇下列其中一個選項:

主控台

  1. 在 Trusted Cloud 控制台中選取資料集。

  2. 在「Dataset Details」(資料集詳細資料) 頁面中,按一下「Labels」(標籤) 右側的鉛筆圖示。

    標籤鉛筆圖示

  3. 在「Edit labels」(編輯標籤) 對話方塊中:

    • 針對要刪除的每個標籤,按一下刪除圖示 (X)。
    • 如要儲存變更,請按一下「更新」

SQL

使用 ALTER SCHEMA SET OPTIONS DDL 陳述式設定現有資料集的標籤。設定標籤會覆寫資料集中的任何現有標籤。以下範例會刪除資料集 mydataset 上的所有標籤:

  1. 前往 Trusted Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    ALTER SCHEMA mydataset
    SET OPTIONS (labels = []);

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

如要刪除資料集標籤,請發出 bq update 指令並搭配使用 clear_label 標記。重複使用該標記即可刪除多個標籤。

如果資料集位於預設專案以外的專案中,請使用下列格式將專案 ID 新增至資料集:project_id:dataset

bq update \
--clear_label key \
project_id:dataset

其中:

  • key 是指您要刪除的標籤鍵。
  • project_id 是您的專案 ID。
  • dataset 是您要更新的資料集。

範例:

如要從 mydataset 刪除 department:shipping 標籤,請輸入帶有 --clear_label 標記的 bq update 指令。mydataset 在您的預設專案中。

    bq update --clear_label department mydataset

如要從 myotherprojectmydataset 刪除 department:shipping 標籤,請輸入帶有 --clear_label 標記的 bq update 指令。

    bq update --clear_label department myotherproject:mydataset

如要從資料集刪除多個標籤,請重複執行 clear_label 標記並指定每個標籤的鍵。舉例來說,如要從預設專案中的 mydataset 刪除 department:shipping 標籤和 cost_center:logistics 標籤,請輸入:

    bq update \
    --clear_label department \
    --clear_label cost_center \
    mydataset

各範例的輸出內容如下:

Dataset 'myproject:mydataset' successfully updated.

API

如要刪除現有資料集的特定標籤,請呼叫 datasets.patch 方法,然後將標籤的鍵值設為 null,藉此更新資料集資源labels 屬性。

如要從資料集中刪除所有標籤,請呼叫 datasets.patch 方法,然後刪除 labels 屬性。

由於 datasets.update 方法會取代整個資料集資源,因此建議使用 datasets.patch 方法。

Go

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

import (
	"context"
	"fmt"

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

// deleteDatasetLabel demonstrates removing a specific label from a dataset's metadata.
func deleteDatasetLabel(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()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{}
	update.DeleteLabel("color")
	if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import java.util.HashMap;
import java.util.Map;

// Sample tp deletes a label on a dataset.
public class DeleteLabelDataset {

  public static void runDeleteLabelDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    deleteLabelDataset(datasetName);
  }

  public static void deleteLabelDataset(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();

      // This example dataset starts with existing label { color: 'green' }
      Dataset dataset = bigquery.getDataset(datasetName);
      // Add label to dataset
      Map<String, String> labels = new HashMap<>();
      labels.put("color", null);

      dataset.toBuilder().setLabels(labels).build().update();
      System.out.println("Dataset label deleted successfully");
    } catch (BigQueryException e) {
      System.out.println("Dataset label was not deleted. \n" + e.toString());
    }
  }
}

Node.js

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteLabelDataset() {
  // Deletes a label on a dataset.
  // This example dataset starts with existing label { color: 'green' }

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

  // Retrieve current dataset metadata.
  const dataset = bigquery.dataset(datasetId);
  const [metadata] = await dataset.getMetadata();

  // Add label to dataset metadata
  metadata.labels = {color: null};
  const [apiResponse] = await dataset.setMetadata(metadata);

  console.log(`${datasetId} labels:`);
  console.log(apiResponse.labels);
}

Python

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr


from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = "your-project.your_dataset"

dataset = client.get_dataset(dataset_id)  # Make an API request.

# To delete a label from a dataset, set its value to None.
dataset.labels["color"] = None

dataset = client.update_dataset(dataset, ["labels"])  # Make an API request.
print("Labels deleted from {}".format(dataset_id))

刪除資料表或檢視表標籤

您可以透過下列方式刪除資料表或檢視表標籤:

  • 使用 Trusted Cloud 主控台
  • 使用 SQL DDL 陳述式
  • 使用 bq 指令列工具的 bq update 指令
  • 呼叫 tables.patch API 方法
    • 由於系統會將檢視表當做資料表資源處理,因此可以使用 tables.patch 方法來修改檢視表和資料表。
  • 使用用戶端程式庫

所需權限

如要刪除資料表或檢視表標籤,您必須具備下列 IAM 權限:

  • bigquery.tables.get
  • bigquery.tables.update

下列每個預先定義的 IAM 角色都包含刪除資料表或檢視標籤所需的權限:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

此外,如果您具備 bigquery.datasets.create 權限,則可以刪除所建立資料集中的資料表和檢視表標籤。

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

刪除資料表或檢視表標籤

如要從資料表或檢視表中刪除標籤,請選擇下列任一做法:

主控台

  1. 在 Trusted Cloud 控制台中選取資料集。

  2. 按一下 [Details] (詳細資料) 分頁標籤,然後按一下「Labels」(標籤) 右側的鉛筆圖示。

    標籤鉛筆圖示

  3. 在「Edit labels」(編輯標籤) 對話方塊中:

    • 針對要刪除的每個標籤,按一下刪除圖示 (X)。

      標籤刪除

    • 如要儲存變更,請按一下「更新」

SQL

請使用 ALTER TABLE SET OPTIONS DDL 陳述式設定現有資料表的標籤,或是使用 ALTER VIEW SET OPTIONS DDL 陳述式設定現有視圖的標籤。設定標籤會覆寫資料表或檢視表上的任何現有標籤。以下範例會刪除資料表 mytable 中的所有標籤:

  1. 前往 Trusted Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    ALTER TABLE mydataset.mytable
    SET OPTIONS (labels = []);

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

如要從資料表或檢視表中刪除標籤,請發出 bq update 指令並搭配使用 clear_label 標記。重複使用該標記即可刪除多個標籤。

如果資料表或檢視表位於預設專案以外的專案中,請使用下列格式將專案 ID 新增至資料集:project_id:dataset

bq update \
--clear_label key \
project_id:dataset.table_or_view

其中:

  • key 是指您要刪除的標籤鍵。
  • project_id 是您的專案 ID。
  • dataset 是您要更新的資料集。
  • table_or_view 是您要更新之資料表或視圖的名稱。

範例:

如要從 mydataset.mytable 刪除 department:shipping 標籤,請輸入帶有 --clear_label 標記的 bq update 指令。mydataset 在您的預設專案中。

    bq update --clear_label department mydataset.mytable

如要從 myotherprojectmydataset.myview 刪除 department:shipping 標籤,請輸入帶有 --clear_label 標記的 bq update 指令。

    bq update --clear_label department myotherproject:mydataset.myview

如要從資料表或檢視表刪除多個標籤,請重複執行 clear_label 標記並指定每個標籤的鍵。舉例來說,如要從預設專案中的 mydataset.mytable 刪除 department:shipping 標籤和 cost_center:logistics 標籤,請輸入:

    bq update \
    --clear_label department \
    --clear_label cost_center \
    mydataset.mytable

各範例的輸出內容如下:

Table 'myproject:mydataset.mytable' successfully updated.

API

如要刪除現有資料表或檢視表的特定標籤,請呼叫 tables.patch 方法,然後將標籤的鍵值設為 null,藉此更新資料表資源labels 屬性。

如要從資料表或檢視表刪除所有標籤,請呼叫 tables.patch 方法並刪除 labels 屬性。

由於系統會將檢視表當做資料表資源處理,因此可以使用 tables.patch 方法來修改檢視表和資料表。此外,因為 tables.update 方法會取代整個資料集資源,因此建議使用 tables.patch 方法。

Go

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

import (
	"context"
	"fmt"

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

// deleteTableLabel demonstrates how to remove a specific metadata Label from a BigQuery table.
func deleteTableLabel(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tbl := client.Dataset(datasetID).Table(tableID)
	meta, err := tbl.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{}
	update.DeleteLabel("color")
	if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;
import java.util.HashMap;
import java.util.Map;

// Sample tp deletes a label on a table.
public class DeleteLabelTable {

  public static void runDeleteLabelTable() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    deleteLabelTable(datasetName, tableName);
  }

  public static void deleteLabelTable(String datasetName, String tableName) {
    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();

      // This example table starts with existing label { color: 'green' }
      Table table = bigquery.getTable(TableId.of(datasetName, tableName));
      // Add label to table
      Map<String, String> labels = new HashMap<>();
      labels.put("color", null);

      table.toBuilder().setLabels(labels).build().update();
      System.out.println("Table label deleted successfully");
    } catch (BigQueryException e) {
      System.out.println("Table label was not deleted. \n" + e.toString());
    }
  }
}

Node.js

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteLabelTable() {
  // Deletes a label from an existing table.
  // This example dataset starts with existing label { color: 'green' }

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

  const dataset = bigquery.dataset(datasetId);
  const [table] = await dataset.table(tableId).get();

  // Retrieve current table metadata
  const [metadata] = await table.getMetadata();

  // Add label to table metadata
  metadata.labels = {color: null};
  const [apiResponse] = await table.setMetadata(metadata);

  console.log(`${tableId} labels:`);
  console.log(apiResponse.labels);
}

Python

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

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

在執行程式碼範例之前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you wish to delete from.
table_id = "your-project.your_dataset.your_table_name"
# TODO(dev): Change label_key to the name of the label you want to remove.
label_key = "color"
table = client.get_table(table_id)  # API request

# To delete a label from a table, set its value to None
table.labels[label_key] = None

table = client.update_table(table, ["labels"])  # API request

print(f"Deleted label '{label_key}' from {table_id}.")

刪除保留標籤

您可以刪除保留標籤。

必要的 IAM 角色

如要取得刪除預留標籤所需的權限,請要求管理員在管理專案中授予您 BigQuery 資源編輯者 (roles/bigquery.resourceEditor) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含 bigquery.reservations.delete 權限,這是刪除預訂標籤所需的權限。

您或許還可透過自訂角色或其他預先定義的角色取得此權限。

刪除保留標籤

如要從預留訂單中刪除標籤,請選擇下列其中一個選項:

SQL

如要刪除預訂標籤,請使用 ALTER RESERVATION SET OPTIONS DDL 陳述式。如要刪除保留項目的標籤,請將標籤設為空陣列。以下範例會刪除預留項目 myreservation 上的標籤:

  1. 前往 Trusted Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    ALTER RESERVATION myreservation
    SET OPTIONS (
      labels = []);

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

bq

如要刪除預訂標籤,請發出 bq update 指令並搭配使用 clear_label 標記和 --reservation 標記。如要刪除多個標籤,請重複使用該標記。

bq update --clear_label KEY  --reservation RESERVATION_NAME

更改下列內容:

  • KEY:您要刪除預訂的標籤鍵。鍵不得重複。鍵和值只能包含小寫英文字母、數字字元、底線和破折號。所有字元都必須使用 UTF-8 編碼,且可使用國際字元。如要刪除預訂的多個標籤,請重複使用 --clear_label 旗標並為每個標籤指定專屬鍵。
  • RESERVATION_NAME:保留項目的名稱。

刪除工作標籤

目前不支援從現有工作中刪除標籤。

後續步驟