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.

Sie können Ansichten nicht mit dem bq-Befehlszeilentool, der REST API oder den Clientbibliotheken kopieren. Sie müssen daher die Ansicht im Ziel-Dataset neu erstellen. Sie können jedoch beim Neuerstellen der Ansicht das bq-Befehlszeilentool verwenden, um die SQL-Abfrage der Ansicht zu 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. 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.

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.

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:

  • Mit der Cloud Console
  • Mit dem Befehl bq rm des bq-Befehlszeilentools
  • 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.

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. 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 löschen.

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

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 Angaben 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 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 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  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

Tipp