Labels ansehen

Auf dieser Seite erfahren Sie, wie Sie Labels in Ihren BigQuery-Ressourcen anzeigen.

Überblick

Sie können Labels folgendermaßen anzeigen:

  • Mit der Cloud Console
  • Mit dem Befehl bq show des bq-Befehlszeilentools
  • Durch Aufruf der API-Methoden datasets.get und tables.get
  • Mit den Clientbibliotheken

Da Ansichten in BigQuery wie Tabellenressourcen behandelt werden, können Sie Labelinformationen mithilfe der Methode tables.get sowohl für Ansichten als auch für Tabellen abrufen.

Erforderliche Berechtigungen

Die zum Ansehen von Labels erforderlichen Berechtigungen hängen vom Typ der Ressource ab, auf die Sie zugreifen.

Dataset-Berechtigungen

Zum Abrufen von Informationen zu Datasets benötigen Sie mindestens Berechtigungen des Typs bigquery.datasets.get. Die folgenden vordefinierten IAM-Rollen enthalten bigquery.datasets.get-Berechtigungen:

  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • 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 dem Zugriff als bigquery.dataOwner hat der Nutzer die Möglichkeit, Informationen über Tabellen in einem Dataset abzurufen.

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

Berechtigungen für Tabellen und Ansichten

Zum Abrufen von Informationen zu Tabellen benötigen Sie mindestens Berechtigungen des Typs bigquery.tables.get. Alle vordefinierten IAM-Rollen enthalten bigquery.tables.get-Berechtigungen, außer bigquery.user und bigquery.jobUser.

Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create ein Dataset erstellt, hat er dafür außerdem bigquery.dataOwner-Zugriff. Mit dem Zugriff als bigquery.dataOwner hat der Nutzer die Möglichkeit, Informationen über Tabellen und Ansichten in einem Dataset abzurufen.

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

Jobberechtigungen

Zum Abrufen von Jobdaten und Metadaten brauchen Sie mindestens Berechtigungen des Typs bigquery.jobs.get. Diese vordefinierte IAM-Rolle umfasst Berechtigungen des Typs bigquery.jobs.get:

  • bigquery.admin

Wenn Sie einem Konto die Rolle bigquery.admin gewähren, kann der Nutzer alle Jobdaten im Projekt aufrufen, unabhängig davon, wer den Job gesendet hat.

Den folgenden Rollen werden Berechtigungen des Typs bigquery.jobs.get für selbst erstellte Jobs gewährt. Diese Nutzer können nur Jobdaten für Jobs ansehen, die sie senden:

  • bigquery.user
  • bigquery.jobUser

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

Dataset-, Tabellen- und Ansichtslabels ansehen

So rufen Sie die Labels einer Ressource auf:

Console

  1. Wählen Sie in der Cloud Console das Dataset, die Tabelle oder die Ansicht aus. Joblabels können in der Cloud Console nicht angezeigt werden.

  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. Labelinformationen werden in der Informationstabelle für die Ressource angezeigt.

    Tabellendetails

bq

Verwenden Sie den Befehl bq show mit der Ressourcen-ID. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn sich die Ressource in einem anderen Projekt als Ihrem Standardprojekt befindet, fügen Sie die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]. Steuern Sie das Ausgabeformat, indem Sie das Flag --format auf pretty setzen, um für eine bessere Lesbarkeit zu sorgen.

bq show --format=pretty [RESOURCE_ID]

Dabei ist [RESOURCE_ID] eine gültige Tabelle, Ansicht, Job-ID oder ein gültiges Dataset.

Beispiele:

Geben Sie den folgenden Befehl ein, um die Labels für mydataset in Ihrem Standardprojekt anzuzeigen.

bq show --format=pretty mydataset

Die Ausgabe sieht in etwa so aus:

+-----------------+--------------------------------------------------------+---------------------+
|  Last modified  |                          ACLs                          |       Labels        |
+-----------------+--------------------------------------------------------+---------------------+
| 11 Jul 19:34:34 | Owners:                                                | department:shipping |
|                 |   projectOwners,                                       |                     |
|                 | Writers:                                               |                     |
|                 |   projectWriters                                       |                     |
|                 | Readers:                                               |                     |
|                 |   projectReaders                                       |                     |
+-----------------+--------------------------------------------------------+---------------------+

Geben Sie den folgenden Befehl ein, um Labels für mydataset.mytable anzuzeigen. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

bq show --format=pretty myotherproject:mydataset.mytable

Die Ausgabe für eine geclusterte Tabelle sieht so aus:

+-----------------+------------------------------+------------+-------------+-----------------+------------------------------------------------+------------------+---------+
|  Last modified  |            Schema            | Total Rows | Total Bytes |   Expiration    |               Time Partitioning                | Clustered Fields | Labels  |
+-----------------+------------------------------+------------+-------------+-----------------+------------------------------------------------+------------------+---------+
| 25 Jun 19:28:14 | |- timestamp: timestamp      | 0          | 0           | 25 Jul 19:28:14 | DAY (field: timestamp, expirationMs: 86400000) | customer_id      | org:dev |
|                 | |- customer_id: string       |            |             |                 |                                                |                  |         |
|                 | |- transaction_amount: float |            |             |                 |                                                |                  |         |
+-----------------+------------------------------+------------+-------------+-----------------+------------------------------------------------+------------------+---------+

API

Rufen Sie die Methode datasets.get oder die Methode tables.get auf. Die Antwort enthält alle Labels, die der Ressource zugeordnet sind.

Alternativ können Sie datasets.list zum Anzeigen der Labels für mehrere Datasets oder tables.list zum Anzeigen der Labels für mehrere Tabellen oder Ansichten verwenden.

Da Ansichten in BigQuery wie Tabellenressourcen behandelt werden, können Sie Labelinformationen mithilfe der Methoden tables.get und tables.list sowohl für Ansichten als auch für Tabellen ansehen.

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"
	"io"

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

// printDatasetLabels retrieves label metadata from a dataset and prints it to an io.Writer.
func printDatasetLabels(w io.Writer, 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()

	meta, err := client.Dataset(datasetID).Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "Dataset %s labels:\n", datasetID)
	if len(meta.Labels) == 0 {
		fmt.Fprintln(w, "Dataset has no labels defined.")
		return nil
	}
	for k, v := range meta.Labels {
		fmt.Fprintf(w, "\t%s:%s\n", k, v)
	}
	return nil
}

Java

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;

// Sample to get dataset labels
public class GetDatasetLabels {

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

  public static void getDatasetLabels(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();

      Dataset dataset = bigquery.getDataset(datasetName);
      dataset
          .getLabels()
          .forEach((key, value) -> System.out.println("Retrieved labels successfully"));
    } catch (BigQueryException e) {
      System.out.println("Label was not found. \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 getDatasetLabels() {
  // Gets labels 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();
  const labels = metadata.labels;

  console.log(`${datasetId} Labels:`);
  for (const [key, value] of Object.entries(labels)) {
    console.log(`${key}: ${value}`);
  }
}
getDatasetLabels();

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.

# View dataset labels.
print("Dataset ID: {}".format(dataset_id))
print("Labels:")
if dataset.labels:
    for label, value in dataset.labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

Tabellenlabels ansehen

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"
	"io"

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

// tableLabels demonstrates fetching metadata from a table and printing the Label metadata to an io.Writer.
func tableLabels(w io.Writer, 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()

	meta, err := client.Dataset(datasetID).Table(tableID).Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "Table %s labels:\n", datasetID)
	if len(meta.Labels) == 0 {
		fmt.Fprintln(w, "Table has no labels defined.")
		return nil
	}
	for k, v := range meta.Labels {
		fmt.Fprintf(w, "\t%s:%s\n", k, v)
	}
	return nil
}

Java

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;

// Sample to get table labels
public class GetTableLabels {

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

  public static void getTableLabels(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));
      table
          .getLabels()
          .forEach((key, value) -> System.out.println("Retrieved labels successfully"));
    } catch (BigQueryException e) {
      System.out.println("Label was not deleted. \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 getTableLabels() {
  // Gets labels on a dataset.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // Retrieve current dataset metadata.
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();
  const labels = metadata.labels;

  console.log(`${tableId} Labels:`);
  for (const [key, value] of Object.entries(labels)) {
    console.log(`${key}: ${value}`);
  }
}
getTableLabels();

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()
# dataset_id = 'my_dataset'
# table_id = 'my_table'

project = client.project
dataset_ref = bigquery.DatasetReference(project, dataset_id)
table_ref = dataset_ref.table(table_id)
table = client.get_table(table_ref)  # API Request

# View table labels
print("Table ID: {}".format(table_id))
print("Labels:")
if table.labels:
    for label, value in table.labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tTable has no labels defined.")
==== YOURS //steffanyb:py-freeze:130:citc/google3/googledata/devsite/site-cloud/en/bigquery/docs/viewing-labels.md

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.

# View dataset labels.
print("Dataset ID: {}".format(dataset_id))
print("Labels:")
if dataset.labels:
    for label, value in dataset.labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")
<<<<

Joblabels ansehen

Nachdem ein Job gesendet wurde, werden die Joblabels nicht in der Cloud Console angezeigt. Zur Anzeige der Labels verwenden Sie den Befehl bq show -j [JOB_ID], die API oder die Clientbibliotheken.

Console

Joblables können nicht über in der Cloud Console angezeigt werden.

bq

Um Labels für einen Abfragejob mit dem bq-Befehlszeilentool anzusehen, geben Sie den Befehl bq show -j mit der Job-ID des Abfragejobs ein. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn Ihr Abfragejob beispielsweise die Job-ID bqjob_r1234d57f78901_000023746d4q12_1 hat, geben Sie folgenden Befehl ein:

bq show -j --format=pretty bqjob_r1234d57f78901_000023746d4q12_1

Die Ausgabe sollte in etwa so aussehen:

+----------+---------+-----------------+----------+-------------------+-----------------+--------------+----------------------+
| Job Type |  State  |   Start Time    | Duration |    User Email     | Bytes Processed | Bytes Billed |        Labels        |
+----------+---------+-----------------+----------+-------------------+-----------------+--------------+----------------------+
| query    | SUCCESS | 03 Dec 15:00:41 | 0:00:00  | email@example.com | 255             | 10485760     | department:shipping  |
|          |         |                 |          |                   |                 |              | costcenter:logistics |
+----------+---------+-----------------+----------+-------------------+-----------------+--------------+----------------------+

API

Rufen Sie die Methode jobs.get auf. Die Antwort enthält alle Labels, die der Ressource zugeordnet sind.

Weitere Informationen