ラベルの削除

このページでは、BigQuery リソースからラベルを削除する方法を説明します。

概要

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

  • Cloud Console または従来のウェブ UI を使用する
  • コマンドライン ツールの bq update コマンドを使用する
  • datasets.patch または tables.patch API メソッドを呼び出す
  • クライアント ライブラリを使用する

必要な権限

データセット ラベルを削除するユーザーには、少なくとも bigquery.datasets.get および bigquery.datasets.update 権限が付与されている必要があります。bigquery.datasets.update 権限と bigquery.datasets.get 権限は、事前定義された以下の Cloud IAM の役割に含まれています。

  • bigquery.dataOwner
  • bigquery.admin

また、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner アクセス権がユーザーに付与されます。bigquery.dataOwner アクセス権により、データセットからラベルを削除する権限と、データセット内のテーブルやビューからラベルを削除する権限が付与されます。

BigQuery での Cloud IAM の役割と権限については、事前定義された役割と権限をご覧ください。

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

データセットのラベルを削除するには、次の手順に従います。

Console

  1. Cloud Console で、データセットを選択します。

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

    ラベル鉛筆

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

    • 削除する各ラベルの削除アイコン(X)をクリックします。
    • [更新] をクリックして、変更を保存します。

従来の UI

  1. ウェブ UI でデータセットを選択します。

  2. [Dataset Details] ページの [Labels] の右にある [Edit] をクリックします。

  3. [Edit Labels] ダイアログで、次の操作を行います。

    • 削除する各ラベルの削除アイコン(X)をクリックします。
    • [OK] をクリックします。

      ラベルの削除

CLI

データセット ラベルを削除するには、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 のリファレンス ドキュメントをご覧ください。

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
    }
    

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 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 のリファレンス ドキュメントをご覧ください。


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

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

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

  • Cloud Console または従来の BigQuery ウェブ UI を使用する
  • コマンドライン ツールの bq update コマンドを使用する
  • tables.patch API メソッドを呼び出す
    • ビューはテーブル リソースと同様に扱われるため、tables.patch を使用してビューとテーブルの両方を変更します。
  • クライアント ライブラリを使用する

必要な権限

テーブルまたはビューのラベルを削除するユーザーには、少なくとも bigquery.tables.update および bigquery.tables.get 権限が付与されている必要があります。bigquery.tables.update 権限と bigquery.tables.get 権限は、事前定義された以下の Cloud IAM の役割に含まれています。

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

また、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner アクセス権がユーザーに付与されます。bigquery.dataOwner アクセス権により、ユーザーはデータセット内のテーブルとビューからラベルを削除できます。

BigQuery での Cloud IAM の役割と権限については、事前定義された役割と権限をご覧ください。

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

テーブルまたはビューのラベルを削除するには、次の手順に従います。

Console

  1. Cloud Console で、データセットを選択します。

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

    ラベル鉛筆

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

    • 削除する各ラベルの削除アイコン(X)をクリックします。

      ラベル削除

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

従来の UI

  1. ウェブ UI でテーブルまたはビューを選択します。

  2. [Details] ページで、[Labels] の右にある [Edit] をクリックします。

  3. [Edit Labels] ダイアログで、次の操作を行います。

    • 削除する各ラベルの削除アイコン(X)をクリックします。
    • [OK] をクリックします。

      ラベルの削除

CLI

テーブルやビューからラベルを削除するには、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 のリファレンス ドキュメントをご覧ください。

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
    }
    

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 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 のリファレンス ドキュメントをご覧ください。

# from google.cloud import bigquery
    # client = bigquery.Client()
    # table_ref = client.dataset('my_dataset').table('my_table')
    # table = client.get_table(table_ref)  # API request

    # This example table starts with one label
    assert table.labels == {"color": "green"}
    # To delete a label from a table, set its value to None
    table.labels["color"] = None

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

    assert table.labels == {}

ジョブラベルの削除

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

次のステップ