Datasets verwalten

In diesem Dokument wird beschrieben, wie Datasets in BigQuery verwaltet werden. Wenn Sie ein Dataset erstellt haben, können Sie es so verwalten:

Datasets umbenennen

Derzeit können Sie den Namen eines vorhandenen Datasets nicht ändern, aber Sie können ein Dataset kopieren. Siehe Datasets kopieren.

Datasets kopieren

Unter Datasets kopieren erfahren Sie, wie Sie ein Dataset kopieren, auch regionenübergreifend.

Dataset verschieben

Wenn Sie ein Dataset manuell von einem Standort an einen anderen verschieben möchten, gehen Sie so vor:

  1. Sie exportieren die Daten aus Ihren BigQuery-Tabellen in einen regionalen oder multiregionalen Cloud Storage-Bucket, der sich am selben Standort wie das Dataset befindet. Wenn sich Ihr Dataset zum Beispiel am multiregionalen Standort "EU" befindet, exportieren Sie Ihre Daten in einen regionalen oder multiregionalen Bucket in der EU.

    Beim Exportieren von Daten aus BigQuery fallen keine Gebühren an. Dagegen wird das Speichern der exportierten Daten in Cloud Storage in Rechnung gestellt. BigQuery-Exporte unterliegen den Limits für Exportjobs.

  2. Sie kopieren oder verschieben die Daten aus Ihrem Cloud Storage-Bucket in einen regionalen oder multiregionalen Bucket am neuen Standort. Wenn Sie zum Beispiel Ihre Daten vom multiregionalen Standort "US" an den regionalen Standort "Tokio" verschieben, werden die Daten in einen regionalen Bucket in Tokio übertragen. Weitere Informationen zum Übertragen von Cloud Storage-Objekten finden Sie in der Cloud Storage-Dokumentation unter Objekte umbenennen, kopieren und verschieben.

    Beachten Sie, dass beim Übertragen von Daten zwischen Regionen Gebühren für ausgehenden Netzwerktraffic in Cloud Storage anfallen.

  3. Nachdem Sie die Daten in einen Cloud Storage-Bucket am neuen Standort übertragen haben, erstellen Sie dort ein neues BigQuery-Dataset. Laden Sie Ihre Daten dann aus dem Cloud Storage-Bucket in BigQuery.

    Beim Laden der Daten in BigQuery fallen keine Kosten an. Das gilt jedoch nicht für das Speichern von Daten in Cloud Storage. Hier werden Gebühren berechnet, bis Sie die Daten oder den Bucket löschen. Es fallen außerdem Kosten an, wenn Sie die Daten in BigQuery speichern, nachdem sie geladen wurden. Das Laden von Daten in BigQuery unterliegt den Limits für Ladejobs.

Weitere Informationen zur Verwendung von Cloud Storage zum Speichern und Verschieben großer Datasets finden Sie unter Cloud Storage mit Big Data verwenden.

Datasets löschen

So können Sie ein Dataset löschen:

  • Mit der Cloud Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq rm im bq-Befehlszeilentool
  • Durch Aufruf der API-Methode datasets.delete
  • Mit den Clientbibliotheken

Erforderliche Berechtigungen

Zum Löschen eines Datasets benötigen Sie Berechtigungen vom Typ bigquery.datasets.delete. Wenn das Dataset Tabellen oder Ansichten enthält, benötigen Sie auch bigquery.tables.delete. Die folgenden vordefinierten Cloud IAM-Rollen enthalten die Berechtigungen bigquery.datasets.delete und bigquery.tables.delete:

  • 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 dem bigquery.dataOwner-Zugriff hat der Nutzer die Möglichkeit, erstellte Datasets und Tabellen zu löschen.

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

Dataset löschen

Wenn Sie ein Dataset über die Cloud Console oder die klassische Web-UI löschen, werden die Tabellen und Ansichten im Dataset (sowie die darin enthaltenen Daten) gelöscht. Wenn Sie ein Dataset mit dem Befehlszeilentool bq löschen, müssen Sie das Flag -r verwenden, um die Tabellen und Ansichten des Datasets zu löschen.

So löschen Sie ein Dataset:

Konsole

  1. Wählen Sie das Dataset im Bereich Ressourcen aus und klicken Sie dann rechts im Fenster auf Delete Dataset (Dataset löschen).

    Dataset löschen

  2. Geben Sie im Dialogfeld Delete dataset (Dataset löschen) den Namen des Datasets in das Textfeld ein und klicken Sie auf Delete (Löschen).

Klassische UI

  1. Klicken Sie im Navigationsbereich neben dem Namen des Datasets auf das Abwärtspfeilsymbol Abwärtspfeil und anschließend auf Dataset löschen.

  2. Gehen Sie im Dialogfeld Dataset löschen so vor:

    • Geben Sie als Dataset-ID den Namen des zu löschenden Datasets ein.
    • Klicken Sie auf OK.

bq

Verwenden Sie den Befehl bq rm mit dem optionalen Flag --dataset oder -d, um ein Dataset zu löschen. Wenn Sie ein Dataset mit dem bq-Befehlszeilentool entfernen, müssen Sie den Befehl bestätigen. Sie können die Bestätigung mit dem Flag -f überspringen.

Wenn das Dataset außerdem Tabellen enthält, müssen Sie das Flag -r verwenden, um alle Tabellen im Dataset zu entfernen. Wenn Sie eine Tabelle in einem anderen Projekt als Ihrem Standardprojekt löschen, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: project_id:dataset.

bq rm -r -f -d <var>project_id:dataset</var>

Dabei gilt:

  • project_id ist die Projekt-ID.
  • dataset ist der Name des zu löschenden Datasets.

Beispiele:

Geben Sie den folgenden Befehl ein, um mydataset und alle darin enthaltenen Tabellen aus Ihrem Standardprojekt zu entfernen. Für den Befehl wird das optionale Flag -d verwendet.

bq rm -r -d mydataset

Geben Sie bei entsprechender Aufforderung y ein und drücken Sie die Eingabetaste.

Geben Sie den folgenden Befehl ein, um mydataset und alle darin enthaltenen Tabellen aus myotherproject zu entfernen. Für den Befehl wird nicht das optionale Flag -d verwendet. Das Flag -f wird zum Überspringen der Bestätigung verwendet.

bq rm -r -f myotherproject:mydataset

API

Rufen Sie die Methode datasets.delete auf, um das Dataset zu löschen. Setzen Sie dann den Parameter deleteContents auf true, um die darin enthaltenen Tabellen zu löschen.

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 BigQueryDeleteDataset
{
    public void DeleteDataset(
        string projectId = "your-project-id",
        string datasetId = "your_empty_dataset"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Delete a dataset that does not contain any tables
        client.DeleteDataset(datasetId: datasetId);
        Console.WriteLine($"Dataset {datasetId} 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"
)

// deleteDataset demonstrates the deletion of an empty dataset.
func deleteDataset(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()

	// To recursively delete a dataset and contents, use DeleteWithContents.
	if err := client.Dataset(datasetID).Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", 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.

DatasetId datasetId = DatasetId.of(projectId, datasetName);
boolean deleted = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
if (deleted) {
  // the dataset was deleted
} else {
  // the dataset 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 deleteDataset() {
  // Deletes a dataset named "my_dataset".

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

  // Create a reference to the existing dataset
  const dataset = bigquery.dataset(datasetId);

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} 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';

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

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 model_id to the ID of the model to fetch.
# dataset_id = 'your-project.your_dataset'

# Use the delete_contents parameter to delete a dataset and its contents.
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(
    dataset_id, delete_contents=True, not_found_ok=True
)  # Make an API request.

print("Deleted dataset '{}'.".format(dataset_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_dataset dataset_id = "my_empty_dataset"
  bigquery = Google::Cloud::Bigquery.new

  # Delete a dataset that does not contain any tables
  dataset = bigquery.dataset dataset_id
  dataset.delete
  puts "Dataset #{dataset_id} deleted."
end

Tipp