Ansichten verwalten

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

Ansichten kopieren

Derzeit können Sie Ansichten nur mithilfe der Cloud Console kopieren.

Es ist nicht möglich, Ansichten mit der klassischen Web-UI, dem bq-Befehlszeilentool, der REST API oder den Clientbibliotheken zu kopieren. Sie müssen die Ansicht im Ziel-Dataset neu erstellen. Wenn Sie die Ansicht neu erstellen möchten, können Sie die SQL-Abfrage der Ansicht mit dem bq-Befehlszeilentool oder der klassischen Web-UI kopieren.

Erforderliche Berechtigungen

Zum Kopieren einer Ansicht in der Cloud Console benötigen Sie mindestens die folgenden Berechtigungen.

Für das Quell-Dataset:

  • bigquery.tables.get zum Kopieren der Metadaten der Ansicht
  • bigquery.tables.getData zum Kopieren der SQL-Abfrage der Ansicht

Unter Umständen sind zusätzliche Berechtigungen wie bigquery.tables.getData erforderlich, um auf die Tabellen zuzugreifen, auf die in der SQL-Abfrage der Ansicht verwiesen wird.

Für das Ziel-Dataset:

  • bigquery.tables.create zum Erstellen der Kopie der Ansicht im Ziel-Dataset

Diese vordefinierten IAM-Rollen enthalten die Berechtigungen bigquery.tables.create, bigquery.tables.get und bigquery.tables.getData:

  • 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 Ansichten aus dem Quell-Dataset kopieren. Die Zugriffsberechtigung auf das Ziel-Dataset ist jedoch weiterhin erforderlich, es sei denn, der Nutzer hat auch dieses erstellt.

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

Ansicht kopieren

So kopieren Sie eine Ansicht:

Console

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

  2. Klicken Sie auf der rechten Seite des Fensters auf Copy View (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

    • Klicken Sie auf Copy (Kopieren).

Klassische UI

Die klassische Web-UI unterstützt das Kopieren von Ansichten nicht. Sie müssen daher die Ansicht im Ziel-Dataset neu erstellen. Sie können jedoch die Neuerstellung vereinfachen und dafür die SQL-Abfrage kopieren, mit der die Ansicht definiert wurde.

So kopieren Sie die SQL-Abfrage, die eine Ansicht definiert:

  1. Wählen Sie im Navigationsbereich der Benutzeroberfläche die Ansicht aus.

  2. Klicken Sie im Bereich View Details (Ansichtsdetails) auf Details.

  3. Kopieren Sie den Text im Feld Abfrage.

bq

Das bq-Befehlszeilentool unterstützt das Kopieren von Ansichten nicht. Sie müssen daher die Ansicht im Ziel-Dataset neu erstellen. Sie können jedoch die Neuerstellung vereinfachen und dafür die SQL-Abfrage kopieren, mit der die Ansicht definiert wurde.

Geben Sie den Befehl bq show aus, um die SQL-Abfrage zu kopieren, die eine Ansicht definiert. Mit dem Flag --format kann die Ausgabe gesteuert werden. Wenn Sie Informationen zu einer Ansicht in einem anderen Projekt als Ihrem Standardprojekt abrufen, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: project_id:dataset. Zum Schreiben der Ansichtsattribute in eine Datei fügen Sie > path_to_file zum Befehl hinzu.

bq show \
--format=prettyjson \
project_id:dataset.view > path_to_file

Dabei gilt:

  • project_id ist die Projekt-ID.
  • dataset ist der Name des Datasets
  • view ist der Name der Ansicht.
  • path_to_file der Pfad zur Ausgabedatei auf Ihrem lokalen Rechner ist.

Beispiele:

Geben Sie den folgenden Befehl ein, um Informationen zu myview in mydataset aufzurufen. mydataset befindet sich in Ihrem Standardprojekt.

bq show --format=prettyjson mydataset.myview

Geben Sie den folgenden Befehl ein, um Informationen zu myview in mydataset aufzurufen. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt. Die Ansichtsattribute werden in eine lokale Datei geschrieben: /tmp/myview.json.

bq show \
--format=prettyjson \
myotherproject:mydataset.myview > /tmp/myview.json

API

Die REST API unterstützt das Kopieren von Ansichten nicht. Sie müssen daher die Ansicht im Ziel-Dataset neu erstellen. Informationen zum Erstellen einer Ansicht mithilfe der REST API finden Sie unter Ansicht erstellen.

Ansicht umbenennen

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

Es ist nicht möglich, den Namen einer vorhandenen Ansicht mit der klassischen Web-UI, dem bq-Befehlszeilentool, der API oder der Clientbibliotheken zu ä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:

  • Mit der Cloud Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq rm des bq-Befehlszeilentools
  • Durch Aufrufen der API-Methode tables.delete

Derzeit können Sie mit jeder dieser 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.

Erforderliche Berechtigungen

Zum Löschen einer Ansicht müssen Sie mindestens die Berechtigungen bigquery.tables.delete und bigquery.tables.get haben. Diese vordefinierten IAM-Rollen enthalten die Berechtigungen bigquery.tables.delete und bigquery.tables.get:

  • 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 bigquery.dataOwner-Zugriff haben Nutzer die Möglichkeit, Ansichten im Dataset zu erstellen.

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. Wählen Sie die gewünschte Ansicht im Feld Resources (Ressourcen) aus. Klicken Sie rechts im Fenster auf Ansicht löschen.

  2. Geben Sie den Namen der Ansicht in das Dialogfeld ein und klicken Sie zur Bestätigung auf Delete (Löschen).

Klassische UI

  1. Klicken Sie in der Navigationsleiste neben dem Namen der Ansicht auf das Abwärtspfeilsymbol Abwärtspfeil und dann auf Ansicht löschen.

  2. Wenn Sie dazu aufgefordert werden, klicken Sie zur Bestätigung auf OK.

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:

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 anwenden, folgen Sie den Schritten zur Einrichtung von C# in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery C# API.


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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

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: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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: Clientbibliotheken verwenden. Weitere Informationen 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 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: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery PHP API.

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: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.


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: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Ruby API.

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

Weitere Informationen