ラベルの更新

このページでは、BigQuery リソースのラベルを更新する方法について説明します。

データセット ラベルの更新

データセット ラベルは、次の方法で更新できます。

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

必要な権限

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

  • bigquery.dataOwner
  • bigquery.admin

また、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、作成したデータセットに対する bigquery.dataOwner アクセス権がそのユーザーに付与されます。 bigquery.dataOwner アクセス権により、ユーザーはデータセットのラベルを更新できます。

BigQuery の IAM 役割と権限の詳細については、アクセス制御をご覧ください。

データセット ラベルの更新

データセットのラベルを更新するには、次の手順を行います。

Console

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

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

    ラベルの鉛筆

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

    • 追加のラベルを適用するには、[ラベルを追加] をクリックします。各キーはデータセットごとに 1 度しか使用できませんが、同じキーが同じプロジェクト内の複数のデータセットで使用できます。
    • ラベルを更新するには、既存のキーまたは値を変更します。
    • [更新] をクリックして、変更を保存します。

従来の UI

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

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

    ラベル編集

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

    • 追加のラベルを適用するには、[Add Label] をクリックします。各キーはデータセットごとに 1 度しか使用できませんが、同じキーが同じプロジェクト内の複数のデータセットで使用できます。
    • ラベルを更新するには、既存のキーまたは値を変更します。
    • [OK] をクリックします。

      新しいラベル

CLI

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

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

bq update \
--set_label key:value \
project_id:dataset

ここで

  • key:value は、追加または更新するラベルのキーと値のペアに対応します。既存のラベルと同じキーを指定した場合は、その既存ラベルの値が更新されます。キーは一意でなければなりません。
  • project_id は、プロジェクト ID です。
  • dataset は、更新するデータセットです。

例:

mydatasetdepartment ラベルを更新するには、bq update コマンドを入力し、ラベルキーとして department を指定します。たとえば、department:shipping ラベルを department:logistics に更新するには次のコマンドを入力します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset

出力は次のようになります。

Dataset 'myotherproject:mydataset' successfully updated.

API

既存のデータセットのラベルを追加または更新するには、datasets.patch メソッドを呼び出して、データセット リソースlabels プロパティを追加または更新します。

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

Go

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}

update := bigquery.DatasetMetadataToUpdate{}
update.SetLabel("color", "green")
if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

このサンプルは、Java 用の Google HTTP クライアント ライブラリを使用してリクエストを BigQuery API に送信します。

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順に沿って操作してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
static final JsonFactory JSON_FACTORY = new JacksonFactory();

public static class Dataset {
  @Key private Map<String, String> labels;

  public Map<String, String> getLabels() {
    return this.labels;
  }

  public Dataset addLabel(String key, String value) {
    if (this.labels == null) {
      this.labels = new HashMap<>();
    }
    this.labels.put(key, value);
    return this;
  }
}

/**
 * Add or modify a label on a dataset.
 *
 * <p>See <a href="https://cloud.google.com/bigquery/docs/labeling-datasets">the BigQuery
 * documentation</a>.
 */
public static void labelDataset(
    String projectId, String datasetId, String labelKey, String labelValue) throws IOException {

  // Authenticate requests using Google Application Default credentials.
  GoogleCredential credential = GoogleCredential.getApplicationDefault();
  credential = credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/bigquery"));

  // Get a new access token.
  // Note that access tokens have an expiration. You can reuse a token rather than requesting a
  // new one if it is not yet expired.
  credential.refreshToken();
  String accessToken = credential.getAccessToken();

  // Set the content of the request.
  Dataset dataset = new Dataset();
  dataset.addLabel(labelKey, labelValue);
  HttpContent content = new JsonHttpContent(JSON_FACTORY, dataset);

  // Send the request to the BigQuery API.
  String urlFormat =
      "https://www.googleapis.com/bigquery/v2/projects/%s/datasets/%s"
          + "?fields=labels&access_token=%s";
  GenericUrl url = new GenericUrl(String.format(urlFormat, projectId, datasetId, accessToken));
  HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory();
  HttpRequest request = requestFactory.buildPostRequest(url, content);
  request.setParser(JSON_FACTORY.createJsonObjectParser());

  // Workaround for transports which do not support PATCH requests.
  // See: http://stackoverflow.com/a/32503192/101923
  request.setHeaders(new HttpHeaders().set("X-HTTP-Method-Override", "PATCH"));
  HttpResponse response = request.execute();

  // Check for errors.
  if (response.getStatusCode() != 200) {
    throw new RuntimeException(response.getStatusMessage());
  }

  Dataset responseDataset = response.parseAs(Dataset.class);
  System.out.printf(
      "Updated label \"%s\" with value \"%s\"\n",
      labelKey, responseDataset.getLabels().get(labelKey));
}

Python

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_ref = client.dataset('my_dataset')
# dataset = client.get_dataset(dataset_ref)  # API request

assert dataset.labels == {}
labels = {"color": "green"}
dataset.labels = labels

dataset = client.update_dataset(dataset, ["labels"])  # API request

assert dataset.labels == labels

テーブルとビューのラベルの更新

テーブルやビューを作成した後にラベルを更新するには、次の方法を使用できます。

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

必要な権限

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

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

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

BigQuery での Cloud IAM 役割と権限については、アクセス制御をご覧ください。

テーブルまたはビューのラベルの更新

テーブルまたはビューのラベルを更新するには、次の手順を行います。

Console

  1. GCP Console で、テーブルまたはビューを選択します。

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

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

    • 追加のラベルを適用するには、[ラベルを追加] をクリックします。各キーは 1 つのテーブルまたはビューにつき 1 回だけ使用できますが、同じキーを別のデータセットのテーブルやビューでも使用できます。
    • ラベルを更新するには、既存のキーまたは値を変更します。
    • [更新] をクリックして、変更を保存します。

従来の UI

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

  2. 詳細ページで、[Labels] の右にある [Edit] をクリックします。この例では、テーブルの詳細が表示されています。

    ラベルを編集

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

    • 追加のラベルを適用するには、[Add Label] をクリックします。各キーは 1 つのテーブルまたはビューにつき 1 回だけ使用できますが、同じキーを別のデータセットのテーブルやビューでも使用できます。
    • ラベルを更新するには、既存のキーまたは値を変更します。
    • [OK] をクリックします。

      新しいラベル

CLI

テーブルまたはビューのラベルを追加または更新するには、set_label フラグを指定して bq update コマンドを発行します。複数のラベルを追加または更新するには、このフラグを繰り返し指定します。

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

bq update \
--set_label key:value \
project_id:dataset.table_or_view

ここで

  • key:value は、追加または更新するラベルのキーと値のペアに対応します。既存のラベルと同じキーを指定した場合は、その既存ラベルの値が更新されます。キーは一意でなければなりません。
  • project_id は、プロジェクト ID です。
  • dataset は、更新するテーブルまたはビューが含まれるデータセットです。
  • table_or_view は、更新するテーブルまたはビューの名前です。

例:

mytabledepartment ラベルを更新するには、bq update コマンドを入力し、ラベルキーとして department を指定します。たとえば、mytabledepartment:shipping ラベルを department:logistics に更新するには、次のコマンドを入力します。mytable は、デフォルト プロジェクトではなく myotherproject にあります。

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset.mytable

出力は次のようになります。

Table 'myotherproject:mydataset.mytable' successfully updated.

API

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

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

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

Go

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
tbl := client.Dataset(datasetID).Table(tableID)
meta, err := tbl.Metadata(ctx)
if err != nil {
	return err
}

update := bigquery.TableMetadataToUpdate{}
update.SetLabel("color", "green")
if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

このサンプルは、Java 用の Google HTTP クライアント ライブラリを使用してリクエストを BigQuery API に送信します。

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順に操作してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

public static class Table {
  @Key private Map<String, String> labels;

  public Map<String, String> getLabels() {
    return this.labels;
  }

  public Table addLabel(String key, String value) {
    if (this.labels == null) {
      this.labels = new HashMap<>();
    }
    this.labels.put(key, value);
    return this;
  }
}

/**
 * Add or modify a label on a table.
 *
 * <p>See <a href="https://cloud.google.com/bigquery/docs/labeling-datasets">the BigQuery
 * documentation</a>.
 */
public static void labelTable(
    String projectId,
    String datasetId,
    String tableId,
    String labelKey,
    String labelValue)
    throws IOException {

  // Authenticate requests using Google Application Default credentials.
  GoogleCredential credential = GoogleCredential.getApplicationDefault();
  credential = credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/bigquery"));

  // Get a new access token.
  // Note that access tokens have an expiration. You can reuse a token rather than requesting a
  // new one if it is not yet expired.
  credential.refreshToken();
  String accessToken = credential.getAccessToken();

  // Set the content of the request.
  Table table = new Table();
  table.addLabel(labelKey, labelValue);
  HttpContent content = new JsonHttpContent(JSON_FACTORY, table);

  // Send the request to the BigQuery API.
  String urlFormat =
      "https://www.googleapis.com/bigquery/v2/projects/%s/datasets/%s/tables/%s"
          + "?fields=labels&access_token=%s";
  GenericUrl url =
      new GenericUrl(String.format(urlFormat, projectId, datasetId, tableId, accessToken));
  HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory();
  HttpRequest request = requestFactory.buildPostRequest(url, content);
  request.setParser(JSON_FACTORY.createJsonObjectParser());

  // Workaround for transports which do not support PATCH requests.
  // See: http://stackoverflow.com/a/32503192/101923
  request.setHeaders(new HttpHeaders().set("X-HTTP-Method-Override", "PATCH"));
  HttpResponse response = request.execute();

  // Check for errors.
  if (response.getStatusCode() != 200) {
    throw new RuntimeException(response.getStatusMessage());
  }

  Table responseTable = response.parseAs(Table.class);
  System.out.printf(
      "Updated label \"%s\" with value \"%s\"\n",
      labelKey, responseTable.getLabels().get(labelKey));
}

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

assert table.labels == {}
labels = {"color": "green"}
table.labels = labels

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

assert table.labels == labels

ジョブラベルの更新

現在、ジョブラベルの更新はサポートされていません。ジョブのラベルを更新するには、新しいラベルを指定してジョブを再送信してください。

ラベルをタグに変換する

値が空のキーを持つラベルはタグとして使用されます。新しいラベルを値なしで作成したり、既存のラベルをデータセット、表、ビューのタグに変換したりできます。ジョブラベルをタグに変換することはできません。

リソースにラベルを付ける場合で key:value の形式が必要ない場合に、タグを利用できます。たとえば、あるテーブルに格納されているテストデータを複数のグループ(サポート、開発など)で使用する場合に、test_data タグをテーブルに追加してそのことを示します。

必要な権限

ラベルをタグに変換するのに必要な権限は、少なくともラベルの更新に必要な権限と同じです。

  • bigquery.datasets.update は、データセットのラベルを変換する場合に必要です。
  • bigquery.tables.update は、テーブルまたはビューラベルを変換する場合に必要です。

事前定義された以下の Cloud IAM 役割には、bigquery.datasets.update 権限が含まれます。

  • bigquery.dataOwner
  • bigquery.admin

事前定義された以下の Cloud IAM 役割には、bigquery.tables.update 権限が含まれます。

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

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

BigQuery での Cloud IAM 役割と権限については、アクセス制御をご覧ください。

タグへのラベルの変換

ラベルをタグに変換するには、次の手順を行います。

Console

  1. GCP Console で、データセット、テーブル、またはビューを選択します。

  2. データセットの場合は、データセットの詳細ページが自動的に開きます。テーブルとビューの場合は、[詳細] をクリックして詳細ページを開きます。

    テーブルの詳細

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

    ラベルの鉛筆

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

    • 既存のラベルの値を削除します。
    • [更新] をクリックします。

従来の UI

  1. ウェブ UI で、データセット、テーブル、またはビューを選択します。

  2. データセットの場合は、Dataset Details ページが自動的に開きます。テーブルとビューの場合は、[Details] をクリックして詳細ページを開きます。

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

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

    • 既存のラベルの値を削除します。
    • [OK] をクリックします。

      タグを追加

CLI

ラベルをタグに変換するには、bq update コマンドを set_label フラグを指定して使用します。キーを指定して、後ろにコロンを付けますが、値は指定しません。これにより、既存のラベルがタグに更新されます。

bq update \
--set_label key: \
resource_id

ここで

  • key: は、タグに更新するラベルキーです。
  • resource_id は、有効なデータセット、テーブル、またはビューの名前です。リソースがデフォルト プロジェクト以外のプロジェクトにある場合は、project_id:dataset の形式でプロジェクト ID を追加します。

例:

mydataset の既存のラベル test_data:development をタグに変更するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

bq update --set_label test_data: myotherproject:mydataset

出力は次のようになります。

Dataset 'myotherproject:mydataset' successfully updated.

API

既存のラベルをタグに変換するには、datasets.patch メソッドまたは tables.patch メソッドを呼び出し、データセット リソースまたはテーブル リソース内のラベル値を空の文字列("")に置き換えます。

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。