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.

También puedes usar Cloud Composer para mover y copiar conjuntos de datos grandes de manera programática.

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:

  • Mediante Cloud Console o la IU web clásica de BigQuery
  • Mediante el comando bq rm en la herramienta de línea de comandos de bq
  • Realiza una llamada al método de API datasets.delete
  • Mediante 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 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 y los permisos de IAM en BigQuery, consulta Funciones y permisos predefinidos.

Verifica si existe un conjunto de datos

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import com.google.cloud.bigquery.DatasetId;

// Sample to check dataset exist
public class DatasetExists {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    datasetExists(datasetName);
  }

  public static void datasetExists(String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Dataset dataset = bigquery.getDataset(DatasetId.of(datasetName));
      if (dataset.exists()) {
        System.out.println("Dataset already exist");
      } else {
        System.out.println("Dataset not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset not found. \n" + e.toString());
    }
  }
}

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python incluidas en la Guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

from google.cloud import bigquery
from google.cloud.exceptions import NotFound

client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to determine existence.
# dataset_id = "your-project.your_dataset"

try:
    client.get_dataset(dataset_id)  # Make an API request.
    print("Dataset {} already exists".format(dataset_id))
except NotFound:
    print("Dataset {} is not found".format(dataset_id))

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 herramienta de línea de comandos de bq, debes usar la marca -r para borrar las tablas y vistas del conjunto de datos.

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.

bq

Usa el comando bq rm con la marca de combinación de teclas -d o --dataset (opcional) para borrar un conjunto de datos. Cuando usas la herramienta de línea de comandos de bq 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>

En el ejemplo anterior, se ilustra lo siguiente:

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

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.

C#

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


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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas 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)
	}
	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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetDeleteOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

public class DeleteDataset {

  public static void runDeleteDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDataset(projectId, datasetName);
  }

  public static void deleteDataset(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      boolean success = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted. \n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas 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 la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas 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 esta muestra, sigue las instrucciones de configuración para Python incluidas en la Guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.


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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby incluidas en la guía de inicio rápido de BigQuery sobre cómo usar 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