ラベルの削除

データセット、テーブル、ビューからラベルを削除する方法は、次のとおりです。

  • Google Cloud コンソールを使用する
  • SQL DDL ステートメントを使用する
  • bq コマンドライン ツールの bq update コマンドを使用する
  • datasets.patch または tables.patch API メソッドを呼び出す
  • クライアント ライブラリの使用

始める前に

このドキュメントの各タスクを実行するために必要な権限をユーザーに与える Identity and Access Management(IAM)のロールを付与します。タスクの実行に必要な権限(存在する場合)は、タスクの「必要な権限」セクションに記載されています。

データセット ラベルの削除

以下のセクションでは、データセット ラベルを削除するための権限と手順を説明します。

必要な権限

データセット ラベルを削除するには、次の IAM 権限が必要です。

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

次の各事前定義 IAM ロールには、データセット ラベルを削除するために必要な権限が含まれています。

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

また、bigquery.datasets.create 権限がある場合は、作成したデータセットのラベルを削除できます。

BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。

データセット ラベルの削除

データセットからラベルを削除するには、次のオプションからひとつ選んでください。

コンソール

  1. Google Cloud コンソールで、データセットを選択します。

  2. データセットの詳細ページで、[ラベル] の右にある鉛筆アイコンをクリックします。

    ラベル鉛筆

  3. [ラベルの編集] ダイアログで、次の操作を行います。

    • 削除するラベルごとに、削除(X)をクリックします。
    • 変更を保存するには、[更新] をクリックします。

SQL

既存のデータセットのラベルを設定するには、ALTER SCHEMA SET OPTIONS DDL ステートメントを使用します。ラベルを設定すると、データセット内の既存のラベルが上書きされます。次の例では、データセット mydataset のすべてのラベルを削除します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

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

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

データセット ラベルを削除するには、clear_label フラグを指定して bq update コマンドを発行します。複数のラベルを削除するには、このフラグを繰り返します。

データセットがデフォルト プロジェクト以外のプロジェクトにある場合は、project_id:dataset の形式でプロジェクト ID をデータセットに追加します。

bq update \
--clear_label key \
project_id:dataset

ここで

  • key は削除するラベルのキーです。
  • project_id はプロジェクト ID です。
  • dataset は更新するデータセットです。

例:

department:shipping ラベルを mydataset から削除するには、bq update コマンドに --clear_label フラグを指定して入力します。mydataset はデフォルト プロジェクトにあります。

    bq update --clear_label department mydataset

department:shipping ラベルを myotherprojectmydataset から削除するには、bq update コマンドに --clear_label フラグを指定して入力します。

    bq update --clear_label department myotherproject:mydataset

複数のラベルをデータセットから削除するには、clear_label フラグを繰り返して各ラベルのキーを指定します。たとえば、department:shipping ラベルと cost_center:logistics ラベルをデフォルト プロジェクトの mydataset から削除するには、次のように入力します。

    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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

// 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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。


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

テーブルまたはビューのラベルの削除

テーブルまたはビューのラベルは、次の方法で削除できます。

  • Google 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. Google Cloud コンソールで、データセットを選択します。

  2. [詳細] タブをクリックしてから、[ラベル] の右側にある鉛筆アイコンをクリックします。

    ラベル鉛筆

  3. [ラベルの編集] ダイアログで、次の操作を行います。

    • 削除するラベルごとに、削除(X)をクリックします。

      ラベル削除

    • 変更を保存するには、[更新] をクリックします。

SQL

既存のテーブルにラベルを設定するには、ALTER TABLE SET OPTIONS DDL ステートメント、または既存のビューのラベルを設定するには、ALTER VIEW SET OPTIONS DDL ステートメントを使用します。ラベルを設定すると、テーブルまたはビューの既存のラベルが上書きされます。次の例では、テーブル mytable からすべてのラベルを削除します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

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

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

テーブルやビューからラベルを削除するには、clear_label フラグを指定して bq update コマンドを発行します。複数のラベルを削除するには、このフラグを繰り返します。

テーブルまたはビューがデフォルト プロジェクト以外のプロジェクトにある場合は、project_id:dataset の形式でプロジェクト ID をデータセットに追加します。

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

ここで

  • key は削除するラベルのキーです。
  • project_id はプロジェクト ID です。
  • dataset は更新するデータセットです。
  • table_or_view は、更新するテーブルまたはビューの名前です。

例:

department:shipping ラベルを mydataset.mytable から削除するには、bq update コマンドに --clear_label フラグを指定して入力します。mydataset はデフォルト プロジェクトにあります。

    bq update --clear_label department mydataset.mytable

department:shipping ラベルを myotherprojectmydataset.myview から削除するには、bq update コマンドに --clear_label フラグを指定して入力します。

    bq update --clear_label department myotherproject:mydataset.myview

複数のラベルをテーブルまたはビューから削除するには、clear_label フラグを繰り返して各ラベルのキーを指定します。たとえば、department:shipping ラベルと cost_center:logistics ラベルをデフォルト プロジェクトの mydataset.mytable から削除するには、次のように入力します。

    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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

// 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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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}.")

ジョブラベルの削除

現在、既存のジョブのラベルを削除することはサポートされていません。

次のステップ