Labels aktualisieren

Auf dieser Seite erfahren Sie, wie Sie Labels für BigQuery-Ressourcen aktualisieren.

Dataset-Labels aktualisieren

Zum Aktualisieren eines Dataset-Labels haben Sie folgende Optionen:

  • Mit der Cloud Console
  • Mit dem Befehl bq update des bq-Befehlszeilentools
  • Durch Aufrufen der API-Methode datasets.patch
  • Mit den Clientbibliotheken

Erforderliche Berechtigungen

Sie benötigen mindestens bigquery.datasets.update-Berechtigungen, um ein Dataset-Label zu aktualisieren. Die folgenden vordefinierten IAM-Rollen enthalten bigquery.datasets.update-Berechtigungen:

  • bigquery.dataOwner
  • bigquery.admin

Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner-Zugriff. Mit bigquery.dataOwner-Zugriff kann der Nutzer Labels für ein Dataset aktualisieren.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Dataset-Label aktualisieren

So aktualisieren Sie Labels für ein Dataset:

Console

  1. Wählen Sie das Dataset in der Cloud Console aus.

  2. Klicken Sie auf der Seite "Dataset-Details" auf das Stiftsymbol rechts neben Labels.

    Stiftsymbol

  3. Im Dialogfeld Labels bearbeiten gehen Sie so vor:

    • Klicken Sie auf Add label (Label hinzufügen), um weitere Labels anzuwenden. Jeder Schlüssel kann pro Dataset nur einmal verwendet werden, Sie können aber denselben Schlüssel in verschiedenen Datasets eines Projekts verwenden.
    • Ändern Sie die vorhandenen Schlüssel oder Werte, um ein Label zu aktualisieren.
    • Klicken Sie auf Update (Aktualisieren), um die Änderungen zu speichern.

bq

Wenn Sie weitere Labels hinzufügen oder ein Dataset-Label aktualisieren möchten, geben Sie den Befehl bq update mit dem Flag set_label aus. Wiederholen Sie das Flag, um mehrere Labels hinzuzufügen oder zu aktualisieren.

Wenn sich das Dataset in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

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

Dabei gilt:

  • key:value entspricht einem Schlüssel/Wert-Paar für ein Label, das Sie hinzufügen oder aktualisieren möchten. Wenn Sie den Schlüssel eines vorhandenen Labels angeben, wird der Wert für das vorhandene Label aktualisiert. Der Schlüssel muss eindeutig sein.
  • project_id ist die Projekt-ID.
  • dataset ist das zu aktualisierende Dataset.

Beispiel:

Geben Sie den bq update-Befehl mit department als Labelschlüssel ein, um das department-Label für mydataset zu aktualisieren. Wenn Sie beispielsweise das Label department:shipping in department:logistics ändern möchten, geben Sie den folgenden Befehl ein. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

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

Die Ausgabe sieht so aus:

Dataset 'myotherproject:mydataset' successfully updated.

API

Wenn Sie weitere Labels hinzufügen oder ein Label für ein vorhandenes Dataset aktualisieren möchten, rufen Sie die Methode datasets.patch auf und aktualisieren das Attribut labels für die Dataset-Ressource oder fügen es hinzu.

Da die Methode datasets.update die gesamte Dataset-Ressource ersetzt, ist die Methode datasets.patch zu bevorzugen.

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

import (
	"context"
	"fmt"

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

// addDatasetLabel demonstrates adding label metadata to an existing dataset.
func addDatasetLabel(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.SetLabel("color", "green")
	if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

In diesem Beispiel wird die Google-HTTP-Clientbibliothek für Java verwendet, um eine Anfrage an die BigQuery API zu senden.

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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 to updates a label on dataset
public class LabelDataset {

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

  public static void labelDataset(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", "green");

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

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

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

async function labelDataset() {
  // Updates a label on a dataset.

  /**
   * 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: 'green'};
  const [apiResponse] = await dataset.setMetadata(metadata);

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  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.
dataset.labels = {"color": "green"}
dataset = client.update_dataset(dataset, ["labels"])  # Make an API request.

print("Labels added to {}".format(dataset_id))

Tabellen- und Ansichtslabels aktualisieren

Zum Aktualisieren eines Labels nach dem Erstellen einer Tabelle oder Ansicht haben Sie folgende Optionen:

  • Mit der Cloud Console
  • Mit dem Befehl bq update des bq-Befehlszeilentools
  • Aufrufen der API-Methode tables.patch
    • Da Ansichten wie Tabellenressourcen behandelt werden, können Sie sowohl Ansichten als auch Tabellen mit der Methode tables.patch ändern.
  • Mit den Clientbibliotheken

Erforderliche Berechtigungen

Sie benötigen mindestens bigquery.tables.update-Berechtigungen, um ein Tabellen- oder Ansichtslabel zu aktualisieren. Die folgenden vordefinierten IAM-Rollen enthalten bigquery.tables.update-Berechtigungen:

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

Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner-Zugriff. Mit bigquery.dataOwner-Zugriff kann der Nutzer Labels für seine Datasets und für Tabellen und Ansichten in diesen Datasets aktualisieren.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Tabellen- oder Ansichtslabel aktualisieren

So aktualisieren Sie ein Tabellen- oder ein Ansichtslabel:

Console

  1. Wählen Sie in der Cloud Console die Tabelle oder Ansicht aus.

  2. Klicken Sie auf den Tab Details und dann auf das Stiftsymbol rechts neben Labels.

  3. Gehen Sie im Dialogfeld Edit Labels (Labels bearbeiten) so vor:

    • Klicken Sie auf Add Label (Label hinzufügen), um weitere Labels anzuwenden. Jeder Schlüssel kann pro Tabelle oder Ansicht nur einmal verwendet werden. Für Tabellen oder Ansichten in unterschiedlichen Datasets kann jedoch derselbe Schlüssel verwendet werden.
    • Ändern Sie die vorhandenen Schlüssel oder Werte, um ein Label zu aktualisieren.
    • Klicken Sie auf Update (Aktualisieren), um die Änderungen zu speichern.

bq

Wenn Sie zusätzliche Labels hinzufügen oder ein Tabellen- oder Ansichtslabel aktualisieren möchten, geben Sie den Befehl bq update mit dem Flag set_label aus. Wiederholen Sie das Flag, um mehrere Labels hinzuzufügen oder zu aktualisieren.

Wenn sich die Tabelle oder Ansicht in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: project_id:dataset.

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

Dabei gilt:

  • key:value entspricht einem Schlüssel/Wert-Paar für ein Label, das Sie hinzufügen oder aktualisieren möchten. Wenn Sie den Schlüssel eines vorhandenen Labels angeben, wird der Wert für das vorhandene Label aktualisiert. Der Schlüssel muss eindeutig sein.
  • project_id ist die Projekt-ID.
  • dataset ist das Dataset, das die zu aktualisierende Tabelle oder Ansicht enthält.
  • table_or_view ist der Name der zu aktualisierenden Tabelle oder Ansicht.

Beispiel:

Geben Sie den Befehl bq update mit department als Labelschlüssel ein, um das department-Label für mytable zu aktualisieren. Wenn Sie beispielsweise das Label department:shipping für mytable in department:logistics ändern möchten, geben Sie den folgenden Befehl ein. mytable befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

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

Die Ausgabe sieht so aus:

Table 'myotherproject:mydataset.mytable' successfully updated.

API

Wenn Sie weitere Labels hinzufügen oder ein Label für eine vorhandene Tabelle oder Ansicht aktualisieren möchten, rufen Sie die Methode tables.patch auf und aktualisieren das Attribut labels für die Tabellenressource oder fügen es hinzu.

Da Ansichten wie Tabellenressourcen behandelt werden, können Sie sowohl Ansichten als auch Tabellen mit der Methode tables.patch ändern.

Da die Methode tables.update die gesamte Dataset-Ressource ersetzt, ist die Methode tables.patch zu bevorzugen.

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

import (
	"context"
	"fmt"

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

// addTableLabel demonstrates adding Label metadata to a BigQuery table.
func addTableLabel(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.SetLabel("color", "green")
	if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

In diesem Beispiel wird die Google-HTTP-Clientbibliothek für Java verwendet, um eine Anfrage an die BigQuery API zu senden.

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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 to adds a label to an existing table
public class LabelTable {

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

  public static void labelTable(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", "green");

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

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

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

async function labelTable() {
  // Adds a label to an existing table.

  /**
   * 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: 'green'};
  const [apiResponse] = await table.setMetadata(metadata);

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

# from google.cloud import bigquery
# client = bigquery.Client()
# project = client.project
# dataset_ref = bigquery.DatasetReference(project, dataset_id)
# table_ref = dataset_ref.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

Joblabels aktualisieren

Derzeit werden Aktualisierungen eines Joblabels nicht unterstützt. Wenn Sie das Label eines Jobs aktualisieren möchten, senden Sie den Job noch einmal mit einem neuen Label.

Labels in Tags umwandeln

Ein Label, das einen Schlüssel mit einem leeren Wert hat, wird als Tag verwendet. Sie können ein neues Label ohne Wert erstellen oder ein vorhandenes Label in ein Tag für ein Dataset, eine Tabelle oder eine Ansicht umwandeln. Ein Joblabel lässt sich nicht in ein Tag umwandeln.

Tags können in Situationen nützlich sein, in denen Sie einer Ressource ein Label hinzufügen, aber das Format key:value nicht benötigt wird. Wenn Sie beispielsweise eine Tabelle mit Testdaten haben, die von mehreren Gruppen verwendet werden (Support, Entwicklung usw.), können Sie der Tabelle zwecks Identifizierung ein test_data-Tag hinzufügen.

Erforderliche Berechtigungen

Zum Umwandeln eines Labels in ein Tag sind mindestens die Berechtigungen erforderlich, die auch zum Aktualisieren von Labels erforderlich sind.

  • bigquery.datasets.update zum Umwandeln eines Dataset-Labels
  • bigquery.tables.update zum Umwandeln eines Tabellen- oder Ansichtslabels

Die folgenden vordefinierten IAM-Rollen enthalten bigquery.datasets.update-Berechtigungen:

  • bigquery.dataOwner
  • bigquery.admin

Die folgenden vordefinierten IAM-Rollen enthalten bigquery.tables.update-Berechtigungen:

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

Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner-Zugriff. Mit bigquery.dataOwner-Zugriff kann der Nutzer Labels für seine Datasets und für Tabellen und Ansichten in diesen Datasets aktualisieren.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Labels in Tags umwandeln

So wandeln Sie ein Label in ein Tag um:

Console

  1. Wählen Sie in der Cloud Console das Dataset, die Tabelle oder die Ansicht aus.

  2. Bei Datasets wird automatisch die Seite "Dataset-Details" angezeigt. Falls Sie eine Tabelle oder Ansicht ausgewählt haben, klicken Sie auf Details, um die Detailseite zu öffnen.

    Tabellendetails

  3. Klicken Sie auf der Detailseite auf das Stiftsymbol rechts neben Labels.

    Stiftsymbol

  4. Im Dialogfeld Labels bearbeiten gehen Sie so vor:

    • Löschen Sie den Wert für ein vorhandenes Label.
    • Klicken Sie auf Aktualisieren.

bq

Verwenden Sie den Befehl bq update mit dem Flag set_label, um ein Label in ein Tag umzuwandeln: Geben Sie den Schlüssel gefolgt von einem Doppelpunkt ein, aber keinen Wert. Dadurch wird ein vorhandenes Label in ein Tag umgewandelt.

bq update \
--set_label key: \
resource_id

Dabei gilt:

  • key: ist der Labelschlüssel, den Sie in ein Tag umwandeln möchten.
  • resource_id ist ein gültiger Name eines Datasets, einer Tabelle oder einer Ansicht. Wenn sich die Ressource in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie die Projekt-ID im Format project_id:dataset hinzu.

Beispiele:

Geben Sie den folgenden Befehl ein, um das vorhandene test_data:development-Label für mydataset in ein Tag zu ändern. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

bq update --set_label test_data: myotherproject:mydataset

Die Ausgabe sieht so aus:

Dataset 'myotherproject:mydataset' successfully updated.

API

Zum Umwandeln eines vorhandenen Labels in ein Tag rufen Sie die Methode datasets.patch oder tables.patch auf und ersetzen die Labelwerte in der Dataset-Ressource oder der Tabellenressource durch einen leeren String ("").

Da Ansichten wie Tabellenressourcen behandelt werden, können Sie sowohl Ansichten als auch Tabellen mit der Methode tables.patch ändern. Da außerdem die Methode tables.update die gesamte Dataset-Ressource ersetzt, wird die Methode tables.patch bevorzugt.

Nächste Schritte