Ansichten verwalten

In diesem Dokument wird beschrieben, wie Sie Ansichten in BigQuery verwalten können. Es gibt verschiedene Optionen:

Hinweis

Weisen Sie IAM-Rollen (Identity and Access Management) zu, die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument gewähren. Die Berechtigungen, die zum Ausführen einer Aufgabe erforderlich sind (sofern zutreffend), werden im Abschnitt "Erforderliche Berechtigungen" der Aufgabe aufgelistet.

Ansicht aktualisieren

Für eine erstellte Ansicht können Sie folgende Ansichtsattribute ändern:

Erforderliche Berechtigungen

Zum Aktualisieren einer Ansicht benötigen Sie die folgenden IAM-Berechtigungen:

  • bigquery.tables.update
  • bigquery.tables.get

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie für das Aktualisieren einer Ansicht benötigen:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Wenn Sie die Berechtigung bigquery.datasets.create haben, können Sie außerdem Tabellen und Ansichten in den von Ihnen erstellten Datasets aktualisieren.

Wenn Sie die SQL-Abfrage der Ansicht aktualisieren, benötigen Sie außerdem Berechtigungen zum Abfragen der Tabellen, auf die die SQL-Abfrage der Ansicht verweist.

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

SQL-Abfrage einer Ansicht aktualisieren

Sie können die zum Definieren einer Ansicht verwendete SQL-Abfrage so aktualisieren:

  • Google Cloud Console verwenden
  • Den Befehl bq update des bq-Befehlszeilentools verwenden
  • Durch Aufrufen der API-Methode tables.patch
  • Mithilfe der Clientbibliotheken

Sie können den SQL-Dialekt in der API oder im bq-Befehlszeilentool von Legacy-SQL zu GoogleSQL ändern. In der Google Cloud Console können Legacy-SQL-Ansichten nicht auf GoogleSQL aktualisiert werden.

So aktualisieren Sie die SQL-Abfrage einer Ansicht:

Console

  1. Maximieren Sie im Bereich Explorer Ihr Projekt und das Dataset und wählen Sie dann die Ansicht aus.

  2. Klicken Sie auf den Tab Details.

  3. Klicken Sie über dem Feld Query (Abfrage) auf die Schaltfläche Edit query (Abfrage bearbeiten). Klicken Sie im angezeigten Dialogfeld auf Open (Öffnen).

    Abfrage bearbeiten

  4. Bearbeiten Sie im Feld Query editor (Abfrageeditor) die SQL-Abfrage und klicken Sie dann auf Save view (Ansicht speichern).

    Ansicht speichern

  5. Prüfen Sie, ob alle Felder im Dialogfeld Save view (Ansicht speichern) korrekt ausgefüllt wurden, bevor Sie auf Save (Speichern) klicken.

bq

Führen Sie den Befehl bq update mit dem Flag --view aus. Um GoogleSQL zu verwenden oder den Abfragedialekt von Legacy-SQL zu GoogleSQL zu aktualisieren, geben Sie zusätzlich das Flag --use_legacy_sql ein und setzen es auf false.

Wenn die Abfrage auf externe, benutzerdefinierte Funktionsressourcen verweist, die in Cloud Storage oder lokalen Dateien gespeichert sind, geben Sie diese Ressourcen mit dem Flag --view_udf_resource an. Das Flag --view_udf_resource wird hier nicht erläutert. Weitere Informationen zum Verwenden von benutzerdefinierten Funktionen finden Sie unter Benutzerdefinierte GoogleSQL-Funktionen.

Wenn Sie eine Ansicht in einem anderen Projekt als dem Standardprojekt aktualisieren, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: project_id:dataset.

bq update \
    --use_legacy_sql=false \
    --view_udf_resource=path_to_file \
    --view='query' \
    project_id:dataset.view

Dabei gilt:

  • path_to_file ist der URI oder lokale Dateisystempfad zu einer Codedatei, die sofort als benutzerdefinierte Funktionsressource, die von der Ansicht verwendet werden kann, geladen und ausgewertet werden soll. Wiederholen Sie das Flag, um mehrere Dateien anzugeben.
  • query: eine gültige GoogleSQL-Abfrage.
  • project_id: Ihre Projekt-ID.
  • dataset: der Name des Datasets, das die zu aktualisierende Ansicht enthält
  • view: der Name der zu aktualisierenden Ansicht

Beispiele

Geben Sie den folgenden Befehl ein, um die SQL-Abfrage für eine Ansicht namens myview in mydataset zu aktualisieren. mydataset befindet sich in Ihrem Standardprojekt. Die zum Aktualisieren der Ansicht verwendete Beispielabfrage fragt Daten aus dem öffentlichen Dataset USA Name Data ab.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    mydataset.myview

Geben Sie den folgenden Befehl ein, um die SQL-Abfrage für eine Ansicht namens myview in mydataset zu aktualisieren. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt. Die zum Aktualisieren der Ansicht verwendete Beispielabfrage fragt Daten aus dem öffentlichen Dataset USA Name Data ab.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    myotherproject:mydataset.myview

API

Zum Aktualisieren einer Ansicht rufen Sie die Methode tables.patch mit einer Tabellenressource auf, die ein aktualisiertes view-Attribut enthält. Da die Methode tables.update die gesamte Tabellenressource ersetzt, ist die Methode tables.patch zu bevorzugen.

Go

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import (
	"context"
	"fmt"

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

// updateView demonstrates updating the query metadata that defines a logical view.
func updateView(projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}

	newMeta := bigquery.TableMetadataToUpdate{
		// This example updates a view into the shakespeare dataset to exclude works named after kings.
		ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
	}

	if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.ViewDefinition;

// Sample to update query on a view
public class UpdateViewQuery {

  public static void runUpdateViewQuery() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String viewName = "MY_VIEW_NAME";
    String updateQuery =
        String.format("SELECT TimestampField, StringField FROM %s.%s", datasetName, tableName);
    updateViewQuery(datasetName, viewName, updateQuery);
  }

  public static void updateViewQuery(String datasetName, String viewName, String query) {
    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();

      // Retrieve existing view metadata
      TableInfo viewMetadata = bigquery.getTable(TableId.of(datasetName, viewName));

      // Update view query
      ViewDefinition viewDefinition = viewMetadata.getDefinition();
      viewDefinition.toBuilder().setQuery(query).build();

      // Set metadata
      bigquery.update(viewMetadata.toBuilder().setDefinition(viewDefinition).build());

      System.out.println("View query updated successfully");
    } catch (BigQueryException e) {
      System.out.println("View query was not updated. \n" + e.toString());
    }
  }
}

Node.js

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

async function updateViewQuery() {
  // Updates a view named "my_existing_view" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_existing_dataset"
  // const tableId = "my_existing_table"
  const dataset = await bigquery.dataset(datasetId);

  // This example updates a view into the USA names dataset to include state.
  const newViewQuery = `SELECT name, state 
  FROM \`bigquery-public-data.usa_names.usa_1910_current\`
  LIMIT 10`;

  // Retrieve existing view
  const [view] = await dataset.table(tableId).get();

  // Retrieve existing view metadata
  const [metadata] = await view.getMetadata();

  // Update view query
  metadata.view = newViewQuery;

  // Set metadata
  await view.setMetadata(metadata);

  console.log(`View ${tableId} updated.`);
}

Python

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
source_id = "my-project.my_dataset.my_table"
view = bigquery.Table(view_id)

# The source table in this example is created from a CSV file in Google
# Cloud Storage located at
# `gs://cloud-samples-data/bigquery/us-states/us-states.csv`. It contains
# 50 US states, while the view returns only those states with names
# starting with the letter 'M'.
view.view_query = f"SELECT name, post_abbr FROM `{source_id}` WHERE name LIKE 'M%'"

# Make an API request to update the query property of the view.
view = client.update_table(view, ["view_query"])
print(f"Updated {view.table_type}: {str(view.reference)}")

Ablaufzeit einer Ansicht aktualisieren

Sie können eine Standardtabellenablaufzeit auf Dataset-Ebene festlegen, die sowohl für Tabellen als auch für Ansichten gilt, oder die Ablaufzeit einer Ansicht bei der Erstellung der Ansicht festlegen. Wenn Sie den Ablauf einer Ansicht bei ihrer Erstellung festlegen, wird der Standardtabellenablauf des Datasets ignoriert. Wenn Sie keine Standardablaufzeit für Tabellen auf Dataset-Ebene und keine Ablaufzeit beim Erstellen der Ansicht festlegen, ist die Ansicht unbegrenzt gültig. Sie müssen die Ansicht dann manuell löschen.

Nach dem Erstellen der Ansicht können Sie die Ablaufzeit der Ansicht jederzeit so aktualisieren:

  • Google Cloud Console verwenden
  • DDL-Anweisung (Data Definition Language, Datendefinitionssprache) in der GoogleSQL-Syntax verwenden
  • Den Befehl bq update des bq-Befehlszeilentools verwenden
  • Durch Aufrufen der API-Methode tables.patch
  • Mit den Clientbibliotheken

So aktualisieren Sie die Ablaufzeit einer Ansicht:

Console

  1. Wählen Sie im Navigationsbereich Ihre Ansicht aus.

  2. Klicken Sie auf der Seite "Details ansehen" auf den Tab Details.

  3. Klicken Sie rechts neben Ansichtsinformationen auf das Symbol "Bearbeiten" (Stift).

  4. Klicken Sie im Dialogfeld Ansichtsinformationen für Ablauf der Ansicht auf Datum angeben.

  5. Geben Sie in der Datumsauswahl das Datum und die Uhrzeit für den Ablauf ein und klicken Sie dann auf Ok.

  6. Klicken Sie auf Aktualisieren. Die aktualisierte Ablaufzeit wird im Bereich Ansichtsinformationen angezeigt.

SQL

Verwenden Sie die DDL-Anweisung ALTER VIEW SET OPTIONS:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));

    Dabei gilt:

    • DATASET_ID: die ID des Datasets, das Ihre Ansicht enthält
    • MY_VIEW: der Name der zu aktualisierenden Ansicht
    • NEW_TIMESTAMP: ein ZEITSTEMPEL-Wert

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Führen Sie den Befehl bq update mit dem Flag --expiration aus. Wenn Sie eine Ansicht in einem anderen Projekt als Ihrem Standardprojekt aktualisieren, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: project_id:dataset.

bq update \
    --expiration integer \
    project_id:dataset.view

Ersetzen Sie Folgendes:

  • integer: die Standardlebensdauer der Tabelle in Sekunden. Der Mindestwert beträgt 3.600 Sekunden bzw. eine Stunde. Die Ablaufzeit entspricht der aktuellen Zeit plus dem ganzzahligen Wert.
  • project_id: Ihre Projekt-ID
  • dataset: der Name des Datasets, das die zu aktualisierende Ansicht enthält
  • view: der Name der zu aktualisierenden Ansicht

Beispiele

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von myview in mydataset auf 5 Tage (432000 Sekunden) zu aktualisieren. mydataset befindet sich in Ihrem Standardprojekt.

bq update \
    --expiration 432000 \
    mydataset.myview

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von myview in mydataset auf 5 Tage (432000 Sekunden) zu aktualisieren. mydataset befindet sich nicht in Ihrem Standardprojekt, sondern in myotherproject.

bq update \
    --expiration 432000 \
    myotherproject:mydataset.myview

API

Rufen Sie die Methode tables.patch auf und verwenden Sie das Attribut expirationTime in der Tabellenressource. Da die Methode tables.update die gesamte Tabellenressource ersetzt, ist die Methode tables.patch zu bevorzugen. Wenn Sie die REST API verwenden, geben Sie die Ablaufzeit der Ansicht in Millisekunden an.

Go

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import (
	"context"
	"fmt"
	"time"

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

// updateTableExpiration demonstrates setting the table expiration of a table to a specific point in time
// in the future, at which time it will be deleted.
func updateTableExpiration(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()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

async function updateTableExpiration() {
  // Updates a table's expiration.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset', // Existing dataset
  // const tableId = 'my_table', // Existing table
  // const expirationTime = Date.now() + 1000 * 60 * 60 * 24 * 5 // 5 days from current time in ms

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

  // Set new table expiration to 5 days from current time
  metadata.expirationTime = expirationTime.toString();
  const [apiResponse] = await table.setMetadata(metadata);

  const newExpirationTime = apiResponse.expirationTime;
  console.log(`${tableId} expiration: ${newExpirationTime}`);
}

Python

Das Aktualisieren der Ablaufzeit einer Ansicht funktioniert genauso wie bei einer Tabelle.

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you want to update.
table_id = "your-project.your_dataset.your_table_name"

# TODO(dev): Set table to expire for desired days days from now.
expiration = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
    days=5
)
table = client.get_table(table_id)  # Make an API request.
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

print(f"Updated {table_id}, expires {table.expires}.")

Beschreibung einer Ansicht aktualisieren

Sie können die Beschreibung einer Ansicht so aktualisieren:

  • Google Cloud Console verwenden
  • DDL-Anweisung (Data Definition Language, Datendefinitionssprache) in der GoogleSQL-Syntax verwenden
  • Den Befehl bq update des bq-Befehlszeilentools verwenden
  • Durch Aufrufen der API-Methode tables.patch
  • Mit den Clientbibliotheken

So aktualisieren Sie die Beschreibung einer Ansicht:

Console

Sie können keine Beschreibung hinzufügen, wenn Sie eine Ansicht mit der Google Cloud Console erstellen. Nachdem die Ansicht erstellt wurde, können Sie auf der Seite Details eine Beschreibung hinzufügen.

  1. Maximieren Sie im Bereich Explorer Ihr Projekt und das Dataset und wählen Sie dann die Ansicht aus.

  2. Klicken Sie auf den Tab Details.

  3. Klicken Sie auf das Stiftsymbol neben Description (Beschreibung).

    Ansichtsbeschreibung bearbeiten

  4. Geben Sie eine Beschreibung in das Dialogfeld ein. Klicken Sie auf Aktualisieren, um die neue Beschreibung zu speichern.

SQL

Verwenden Sie die DDL-Anweisung ALTER VIEW SET OPTIONS:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      description = 'NEW_DESCRIPTION');

    Dabei gilt:

    • DATASET_ID: die ID des Datasets, das Ihre Ansicht enthält
    • MY_VIEW: der Name der zu aktualisierenden Ansicht
    • NEW_DESCRIPTION: die neue Beschreibung der Ansicht

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Führen Sie den Befehl bq update mit dem Flag --description aus. Wenn Sie eine Ansicht in einem anderen Projekt als Ihrem Standardprojekt aktualisieren, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq update \
    --description "description" \
    project_id:dataset.view

Dabei gilt:

  • description: der Text, der die Ansicht in Anführungszeichen beschreibt.
  • project_id: Ihre Projekt-ID.
  • dataset: der Name des Datasets, das die zu aktualisierende Ansicht enthält
  • view: der Name der zu aktualisierenden Ansicht

Beispiele

Geben Sie den folgenden Befehl ein, um die Beschreibung von myview in mydataset zu "Description of myview" zu ändern. mydataset befindet sich in Ihrem Standardprojekt.

bq update \
    --description "Description of myview" \
    mydataset.myview

Geben Sie den folgenden Befehl ein, um die Beschreibung von myview in mydataset zu "Description of myview" zu ändern. mydataset befindet sich nicht in Ihrem Standardprojekt, sondern in myotherproject.

bq update \
    --description "Description of myview" \
    myotherproject:mydataset.myview

API

Zum Aktualisieren der Ansichtsbeschreibung in der Tabellenressource rufen Sie die Methode tables.patch auf und verwenden das Attribut description. Da die Methode tables.update die gesamte Tabellenressource ersetzt, ist die Methode tables.patch zu bevorzugen.

Go

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import (
	"context"
	"fmt"

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

// updateTableDescription demonstrates how to fetch a table's metadata and updates the Description metadata.
func updateTableDescription(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()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		Description: "Updated description.",
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

Das Aktualisieren der Beschreibung einer Ansicht funktioniert genauso wie bei einer Tabelle.

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Java-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

async function updateTableDescription() {
  // Updates a table's description.

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

  // Set new table description
  const description = 'New table description.';
  metadata.description = description;
  const [apiResponse] = await table.setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${tableId} description: ${newDescription}`);
}

Python

Das Aktualisieren der Beschreibung einer Ansicht funktioniert genauso wie bei einer Tabelle.

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

# 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.description == "Original description."
table.description = "Updated description."

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

assert table.description == "Updated description."

Ansichten kopieren

Sie können eine Ansicht mit der Google Cloud Console kopieren.

Sie können Ansichten nicht mit dem bq-Befehlszeilentool, der REST API oder den Clientbibliotheken kopieren. Sie können jedoch eine Ansicht in den Zieldatensatz kopieren.

Erforderliche Berechtigungen

Zum Kopieren einer Ansicht in der Google Cloud Console benötigen Sie IAM-Berechtigungen für das Quell- und Ziel-Dataset.

  • Für das Quell-Dataset benötigen Sie Folgendes:

    • bigquery.tables.get
    • bigquery.tables.getData (erforderlich, um auf die Tabellen zuzugreifen, auf die in der SQL-Abfrage der Ansicht verwiesen wird)
  • Für das Ziel-Dataset benötigen Sie Folgendes:

    • bigquery.tables.create (kann eine Kopie der Ansicht im Ziel-Dataset erstellen)

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Kopieren einer Ansicht benötigen:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Wenn Sie die Berechtigung bigquery.datasets.create haben, können Sie außerdem Ansichten in den von Ihnen erstellten Datasets löschen. Sie benötigen auch Zugriff auf das Ziel-Dataset, sofern Sie dieses nicht erstellt haben.

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

Ansicht kopieren

So kopieren Sie eine Ansicht:

  1. Maximieren Sie im Bereich Explorer Ihr Projekt und das Dataset und wählen Sie dann die Ansicht aus.

  2. Klicken Sie im Detailbereich auf Ansicht kopieren.

  3. Gehen Sie im Dialogfeld Copy view (Ansicht kopieren) so vor:

    • Überprüfen Sie im Abschnitt Source (Quelle), ob Project name (Projektname), Dataset name (Dataset-Name) und Table name (Tabellenname) korrekt sind.
    • Gehen Sie im Abschnitt "Destination" (Ziel) so vor:

      • Bei Project name (Projektname) wählen Sie das Projekt aus, in das Sie die Ansicht kopieren möchten.
      • Bei Dataset name (Dataset-Name) wählen Sie das Dataset aus, in dem die kopierte Ansicht enthalten sein soll.
      • Geben Sie für Table name (Tabellenname) den Namen der Ansicht ein. Sie können die Ansicht umbenennen, indem Sie einen neuen Namen in das Feld eingeben. Wenn Sie einen neuen Namen eingeben, muss dieser den Benennungsregeln für Ansichten entsprechen.

      Dialogfeld "Copy view" (Ansicht kopieren)

    • Klicken Sie auf Kopieren.

Es gelten Einschränkungen für Kopierjobs. Weitere Informationen finden Sie unter Kontingente und Limits.

Ansicht umbenennen

Derzeit können Sie eine Ansicht nur dann umbenennen, wenn Sie die Ansicht mit der Google Cloud Console kopieren. Eine Anleitung, wie Sie eine Ansicht beim Kopiervorgang umbenennen, finden Sie im Abschnitt Ansicht kopieren.

Sie können den Namen einer vorhandenen Ansicht nicht mit dem bq-Befehlszeilentool, der API oder den Clientbibliotheken ändern. Sie müssen dann die Ansicht mit dem neuen Namen neu erstellen.

Ansichten löschen

Ansichten können auf folgende Weise gelöscht werden:

  • Google Cloud Console verwenden
  • Den Befehl bq rm des bq-Befehlszeilentools verwenden
  • Durch Aufrufen der API-Methode tables.delete

Derzeit können Sie mit diesen Methoden immer nur eine Ansicht auf einmal löschen.

Wenn Ansichten nach Ablauf eines bestimmten Zeitraums automatisch gelöscht werden sollen, legen Sie dafür die standardmäßige Ablaufzeit auf Dataset-Ebene fest oder geben Sie die Ablaufzeit beim Erstellen der Ansicht an.

Wenn Sie eine autorisierte Ansicht löschen, kann es bis zu 24 Stunden dauern, bis die gelöschte Ansicht aus der autorisierten Ansicht der Liste des Quell-Datasets entfernt wird.

Beim Löschen einer Ansicht werden auch alle mit dieser Ansicht verknüpften Berechtigungen gelöscht. Wenn Sie eine gelöschte Ansicht neu erstellen, müssen Sie auch zuvor alle Zugriffsberechtigungen neu konfigurieren.

Erforderliche Berechtigungen

Zum Löschen einer Ansicht benötigen Sie die folgenden IAM-Berechtigungen:

  • bigquery.tables.delete

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie für das Löschen einer Tabelle benötigen:

  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Wenn Sie die Berechtigung bigquery.datasets.create haben, können Sie außerdem Ansichten in den von Ihnen erstellten Datasets löschen.

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

Ansicht löschen

So löschen Sie eine Ansicht:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und das Dataset und wählen Sie dann die Ansicht aus.

  3. Klicken Sie im Detailbereich auf Ansicht löschen.

  4. Geben Sie "delete" in das Dialogfeld ein und klicken Sie zur Bestätigung auf Löschen.

SQL

Verwenden Sie die DDL-Anweisung DROP VIEW:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    DROP VIEW mydataset.myview;

    Dabei gilt:

    • DATASET_ID: die ID des Datasets, das Ihre Ansicht enthält
    • MY_VIEW: der Name der zu aktualisierenden Ansicht
    • NEW_DESCRIPTION: die neue Beschreibung der Ansicht

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie den Befehl bq rm mit dem Flag --table (oder dem Kürzel -t), um eine Ansicht zu löschen. Wenn Sie eine Ansicht mit dem bq-Befehlszeilentool entfernen, müssen Sie die Aktion bestätigen. Sie können das Flag --force (oder das Kürzel -f) zum Überspringen der Bestätigung verwenden.

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

bq rm \
-f \
-t \
project_id:dataset.view

Dabei gilt:

  • project_id ist die Projekt-ID.
  • dataset ist der Name des Datasets, das die Tabelle enthält.
  • view ist der Name der Ansicht, die gelöscht werden soll.

Beispiele:

Mit dem bq-Befehlszeilentool können Sie bq-Befehle ausführen.

Aktivieren Sie Cloud Shell in der Google Cloud Console.

Cloud Shell aktivieren

Geben Sie den folgenden Befehl ein, um myview aus mydataset zu löschen. mydataset befindet sich in Ihrem Standardprojekt.

bq rm -t mydataset.myview

Geben Sie den folgenden Befehl ein, um myview aus mydataset zu löschen. mydataset befindet sich nicht in Ihrem Standardprojekt, sondern in myotherproject.

bq rm -t myotherproject:mydataset.myview

Geben Sie den folgenden Befehl ein, um myview aus mydataset zu löschen. mydataset befindet sich in Ihrem Standardprojekt. Durch das Kürzel -f in diesem Befehl wird die Bestätigung übersprungen.

bq rm -f -t mydataset.myview

API

Rufen Sie die API-Methode tables.delete auf und legen Sie die zu löschende Datenansicht mit dem Parameter tableId fest.

C#

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der C#-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery C# API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

Go

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import (
	"context"
	"fmt"

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

// deleteTable demonstrates deletion of a BigQuery table.
func deleteTable(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()

	table := client.Dataset(datasetID).Table(tableID)
	if err := table.Delete(ctx); err != nil {
		return err
	}
	return nil
}

Java

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

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

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True.
client.delete_table(table_id, not_found_ok=True)  # Make an API request.
print("Deleted table '{}'.".format(table_id))

Ruby

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

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Ansicht wiederherstellen

Sie können eine gelöschte Ansicht nicht direkt wiederherstellen. Es gibt jedoch Lösungen für bestimmte Szenarien:

  • Wenn eine Datenansicht gelöscht wurde, weil das übergeordnete Dataset gelöscht wurde, können Sie das Löschen des Datasets rückgängig machen, um die Datenansicht abzurufen.
  • Wenn eine Ansicht explizit gelöscht wird, können Sie sie erneut erstellen, indem Sie die letzte Abfrage verwenden, mit der die Ansicht erstellt oder aktualisiert wurde. Die Abfragedefinition für den Vorgang zum Erstellen oder Aktualisieren der Ansicht finden Sie in den Protokollen.

Sicherheit ansehen

Informationen zum Steuern des Zugriffs auf Ansichten in BigQuery finden Sie unter Autorisierte Ansichten.

Nächste Schritte