Cómo administrar conjuntos de datos

En este documento, se describe cómo administrar conjuntos de datos en BigQuery. Después de crear un conjunto de datos, puedes administrarlo de las siguientes maneras:

Cambia el nombre de los conjuntos de datos

En la actualidad, no puedes cambiar el nombre de un conjunto de datos existentes, pero puedes copiar un conjunto de datos. Consulta Copia conjuntos de datos.

Copia conjuntos de datos

Si deseas ver los pasos para copiar un conjunto de datos, incluso entre regiones, consulta Copia conjuntos de datos.

Mueve un conjunto de datos

Para mover un conjunto de datos de una ubicación a otra de forma manual, sigue este proceso:

  1. Exporta los datos desde tus tablas de BigQuery hasta un depósito de Cloud Storage regional o multirregión en la misma ubicación que tu conjunto de datos. Por ejemplo, si tu conjunto de datos se encuentra en la ubicación multirregional de la UE, debes exportar tus datos a un depósito regional o multirregional en la UE.

    No se aplican cargos por exportar datos desde BigQuery, pero sí por almacenar los datos exportados en Cloud Storage. Las exportaciones de BigQuery están sujetas a los límites de los trabajos de exportación.

  2. Copia o mueve los datos de tu depósito de Cloud Storage a un depósito regional o multirregional en la ubicación nueva. Por ejemplo, si trasladas tus datos desde la ubicación multirregional de EE.UU. a la ubicación regional de Tokio, debes transferir los datos a un depósito regional en Tokio. Para obtener más información sobre la transferencia de objetos de Cloud Storage, consulta Renombra, copia y mueve objetos en la documentación de Cloud Storage.

    Ten en cuenta que con la transferencia de datos entre regiones se incurre en cargos de salida de red en Cloud Storage.

  3. Después de transferir los datos a un depósito de Cloud Storage en la ubicación nueva, crea un conjunto de datos nuevo de BigQuery (en la ubicación nueva). Luego, carga tus datos del depósito de Cloud Storage en BigQuery.

    No se te cobrará por cargar los datos en BigQuery, pero sí por almacenar los datos en Cloud Storage hasta que borres los datos o el depósito. También se te cobra por almacenar los datos en BigQuery después de que se carguen. La carga de datos en BigQuery está sujeta a los límites de los trabajos de carga.

A fin de obtener más información sobre el uso de Cloud Storage para almacenar y mover conjuntos de datos grandes, consulta Usa Cloud Storage con macrodatos.

Borrar conjuntos de datos

Para borrar un conjunto de datos, tienes las siguientes opciones:

  • Usar Cloud Console o la IU web clásica de BigQuery
  • Usa el comando bq rm de CLI
  • Realiza una llamada al método de API datasets.delete
  • Usar bibliotecas cliente

Permisos necesarios

Como mínimo, para borrar un conjunto de datos, debes tener los permisos bigquery.datasets.delete. Si el conjunto de datos contiene tablas o vistas, también se requiere bigquery.tables.delete. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.datasets.delete y bigquery.tables.delete:

  • bigquery.dataOwner
  • bigquery.admin

Además, si un usuario tiene permisos bigquery.datasets.create, se le otorga el acceso bigquery.dataOwner cuando crea un conjunto de datos. El acceso de bigquery.dataOwner le da al usuario la capacidad de borrar los conjuntos de datos y tablas que crea.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Funciones y permisos predefinidos.

Borra un conjunto de datos

Cuando borras un conjunto de datos mediante Cloud Console o la IU web clásica, las tablas y vistas en él (y los datos que contienen) se borran. Cuando borras un conjunto de datos mediante la CLI, debes usar la marca -r para borrar sus tablas y vistas.

Sigue los siguientes pasos para borrar un conjunto de datos:

Console

  1. Selecciona el conjunto de datos en el panel Resources (Recursos) y, a continuación, haz clic en Delete dataset (Borrar conjunto de datos) a la derecha de la ventana.

    Borrar conjunto de datos

  2. En el cuadro de diálogo Borrar conjunto de datos, escribe el nombre del conjunto de datos en el cuadro de texto y, luego, haz clic en Borrar.

IU clásica

  1. Haz clic en el ícono de la flecha hacia abajo ícono de flecha hacia abajo junto al nombre de tu conjunto de datos en la navegación y haz clic en Borrar conjunto de datos (Delete dataset).

  2. En el cuadro de diálogo Delete Dataset (Borrar conjunto de datos):

    • Para el ID del conjunto de datos, ingresa el nombre del conjunto de datos que deseas borrar.
    • Haz clic en Aceptar.

CLI

Usa el comando bq rm con la marca de acceso directo -d o --dataset (opcional) para borrar un conjunto de datos. Cuando usas la CLI para quitar un conjunto de datos, debes confirmar el comando. Puedes usar la marca -f para omitir la confirmación.

Además, si el conjunto de datos contiene tablas, debes usar la marca -r para quitar todas las tablas del conjunto de datos. Si borras una tabla en un proyecto que no sea tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato: project_id:dataset.

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

Donde:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que quieres borrar.

Ejemplos:

Ingresa el siguiente comando para quitar mydataset y todas las tablas que contiene de tu proyecto predeterminado. El comando usa el acceso directo opcional -d.

bq rm -r -d mydataset

Cuando se te solicite, escribe y y presione Entrar.

Ingresa el siguiente comando para quitar mydataset y todas las tablas que contiene de myotherproject. El comando no usa el acceso directo -d opcional. La marca -f se usa para omitir la confirmación.

bq rm -r -f myotherproject:mydataset

API

Llama al método datasets.delete a fin de borrar el conjunto de datos y establece el parámetro deleteContents en true para borrar las tablas que contiene.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

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)
	}

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

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en Guía de inicio rápido: usa bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

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

Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP incluidas en guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para PHP.

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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

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

# TODO(developer): 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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Ruby.

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

Próximos pasos