ラベルの削除

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

  • 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)をクリックします。
    • 変更を保存するには、[更新] をクリックします。

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

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

    [BigQuery] に移動

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

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

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

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

データセット ラベルを削除するには、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.

既存のデータセットの特定のラベルを削除するには、datasets.patch メソッドを呼び出し、ラベルのキー値を null に設定してデータセット リソースlabels プロパティを更新します。

データセットからすべてのラベルを削除するには、datasets.patch メソッドを呼び出して labels プロパティを削除します。

datasets.update メソッドはデータセット リソース全体を置き換えるため、datasets.patch メソッドの方が適切です。

このサンプルを試す前に、クライアント ライブラリを使用した 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
}

このサンプルを試す前に、クライアント ライブラリを使用した 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());
    }
  }
}

このサンプルを試す前に、クライアント ライブラリを使用した 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);
}

このサンプルを試す前に、クライアント ライブラリを使用した 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)をクリックします。

      ラベル削除

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

既存のテーブルにラベルを設定するには、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. [実行] をクリックします。

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

テーブルやビューからラベルを削除するには、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.

既存のテーブルまたはビューの特定のラベルを削除するには、tables.patch メソッドを呼び出し、ラベルのキー値を null に設定してテーブル リソースlabels プロパティを更新します。

テーブルまたはビューからすべてのラベルを削除するには、tables.patch メソッドを呼び出して labels プロパティを削除します。

ビューはテーブル リソースと同様に扱われるため、tables.patch メソッドを使用してビューとテーブルの両方を変更できます。また、tables.update メソッドはデータセット リソース全体を置き換えるため、tables.patch メソッドを使用します。

このサンプルを試す前に、クライアント ライブラリを使用した 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
}

このサンプルを試す前に、クライアント ライブラリを使用した 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());
    }
  }
}

このサンプルを試す前に、クライアント ライブラリを使用した 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);
}

このサンプルを試す前に、クライアント ライブラリを使用した 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}.")

ジョブラベルの削除

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

次のステップ