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 mithilfe der klassischen Web-UI, der Befehlszeile, der REST API oder der Clientbibliotheken zu kopieren. Stattdessen müssen Sie die Ansicht im Ziel-Dataset neu erstellen. Wenn Sie zuerst die SQL-Abfrage der Ansicht über die Befehlszeile oder die klassische Web-UI kopieren, können Sie die Ansicht leichter neu erstellen.

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

Die folgenden vordefinierten Cloud 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 Cloud 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 Query (Abfrage).

Befehlszeile

Das bq-Befehlszeilentool unterstützt das Kopieren einer Datenansicht 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 Ihre Projekt-ID.
  • dataset ist der Name des Datasets.
  • view der Name der Ansicht ist.
  • 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 mithilfe der klassischen Web-UI, der Befehlszeile, 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 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. Die folgenden vordefinierten Cloud 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 Cloud 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.

Befehlszeile

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 mithilfe der CLI 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 Ihre Projekt-ID.
  • dataset der Name des Datasets ist, das die Tabelle enthält.
  • view der Name der Ansicht ist, die Sie löschen möchten.

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 ausprobieren, folgen Sie den Schritten zum Einrichten von C# in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben 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)
	}

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

Java

Bevor Sie dieses Beispiel ausprobieren, lesen Sie die Anleitung zum Einrichten 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 ausprobieren, folgen Sie den Schritten zum Einrichten 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 der Anleitung zur Einrichtung von PHP in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben 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 ausprobieren, folgen Sie der Anleitung zum Einrichten von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# TODO(developer): Import the client library.
# from google.cloud import bigquery

# TODO(developer): 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 der Anleitung zur Einrichtung von Ruby in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. 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