Como gerenciar conjuntos de dados

Neste documento, descrevemos como gerenciar conjuntos de dados no BigQuery. Depois de criar um conjunto de dados, é possível gerenciá-lo das seguintes maneiras:

Como renomear conjuntos de dados

Atualmente, não é possível alterar o nome de um conjunto de dados atual, mas é possível copiar um conjunto de dados. Consulte Como copiar conjuntos de dados.

Como copiar conjuntos de dados

Para ver as etapas para copiar um conjunto de dados, inclusive entre regiões, consulte Como copiar conjuntos de dados.

Como mover conjuntos de dados

Para mover manualmente um conjunto de dados de um local para outro, siga estas instruções:

  1. Exporte os dados das tabelas do BigQuery para um intervalo regional ou multirregional do Cloud Storage no mesmo local do conjunto de dados. Por exemplo, se o conjunto de dados estiver no local multirregional EU, exporte os dados para um intervalo regional ou multirregional no EU.

    Não há cobrança pela exportação de dados do BigQuery, mas são cobradas taxas pelo armazenamento dos dados exportados no Cloud Storage. As exportações do BigQuery estão sujeitas aos limites de jobs de exportação.

  2. Copie ou mova os dados do intervalo do Cloud Storage para um intervalo regional ou multirregional no novo local. Por exemplo, se você estiver movendo os dados do local multirregional US para o local regional Tokyo, será necessário transferi-los para um intervalo regional em Tokyo. Para mais informações sobre como transferir objetos do Cloud Storage, consulte na documentação do Cloud Storage Como renomear, copiar e mover objetos.

    A transferência de dados entre regiões gera cobranças de saída de rede no Cloud Storage.

  3. Depois de transferir os dados para um intervalo do Cloud Storage no novo local, crie um novo conjunto de dados do BigQuery no novo local. Em seguida, carregue os dados do intervalo do Cloud Storage no BigQuery.

    Você não será cobrado pelo carregamento dos dados no BigQuery, mas haverá cobranças pelo armazenamento no Cloud Storage até que eles ou o intervalo sejam excluídos. Também haverá cobrança pelo armazenamento de dados no BigQuery depois que eles forem carregados. O carregamento de dados no BigQuery está sujeito às limitações de jobs de carregamento.

Para mais informações sobre como usar o Cloud Storage para armazenar e mover grandes conjuntos de dados, consulte Como usar o Cloud Storage com Big Data.

Como excluir conjuntos de dados

Para excluir um conjunto de dados:

  • Use o Console do Cloud ou a IU da Web clássica do BigQuery;
  • use o comando bq rm da CLI;
  • chame o método de API datasets.delete;
  • use as bibliotecas de cliente.

Permissões necessárias

É preciso ter, pelo menos, as permissões bigquery.datasets.delete para excluir um conjunto de dados. Se o conjunto de dados contém tabelas ou visualizações, bigquery.tables.delete também é necessário. Os seguintes papéis predefinidos do Cloud IAM incluem permissões bigquery.datasets.delete e bigquery.tables.delete:

  • bigquery.dataOwner
  • bigquery.admin

Além disso, se um usuário tiver permissões bigquery.datasets.create ao criar um conjunto de dados, será concedido o acesso bigquery.dataOwner. Com o acesso bigquery.dataOwner, o usuário consegue excluir conjuntos de dados e tabelas criados por ele.

Para mais informações sobre os papéis e permissões do Cloud IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como excluir um conjunto de dados

Quando você exclui um conjunto de dados usando o Console do Cloud ou a IU clássica da Web, as tabelas e as visualizações nesse conjunto, além dos dados que elas contêm, são excluídos. Ao excluir um conjunto de dados usando a CLI, é preciso usar a sinalização -r para excluir as tabelas e visualizações desse conjunto.

Para excluir um conjunto de dados, siga estas etapas:

Console

  1. Selecione seu conjunto de dados no painel Recursos e clique em Excluir conjunto de dados do lado direito da janela.

    Excluir conjunto de dados

  2. Na caixa de diálogo Excluir conjunto de dados, digite o nome do conjunto na caixa de texto e clique em Excluir.

IU clássica

  1. Clique no ícone de seta para baixo ícone de seta para baixo ao lado do nome do conjunto de dados na navegação e selecione Excluir conjunto de dados.

  2. Na caixa de diálogo Excluir conjunto de dados, siga as etapas abaixo:

    • Em Código do conjunto de dados, insira o nome do conjunto de dados a ser excluído.
    • Clique em OK.

CLI

Use o comando bq rm com a sinalização de atalho opcional --dataset ou -d para excluir um conjunto de dados. Quando você usa a CLI para remover um conjunto de dados, precisa confirmar o comando. É possível usar a sinalização -f para pular a confirmação.

Além disso, se o conjunto de dados contém tabelas, você precisa usar a sinalização -r para remover todas elas. Caso esteja excluindo uma tabela em um projeto diferente do padrão, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: project_id:dataset.

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

Em que:

  • project_id é o ID do projeto.
  • dataset é o nome do conjunto de dados que você está excluindo.

Exemplos:

Digite o seguinte comando para remover do projeto padrão mydataset e todas as respectivas tabelas. O comando usa o atalho opcional -d.

bq rm -r -d mydataset

Quando solicitado, digite y e pressione Enter.

Digite o seguinte comando para remover mydataset e todas as respectivas tabelas de myotherproject. O comando não usa o atalho opcional -d. A sinalização -f é usada para ignorar a confirmação.

bq rm -r -f myotherproject:mydataset

API

Chame o método datasets.delete para excluir o conjunto de dados e defina o parâmetro deleteContents como true para excluir as tabelas dele.

Go

Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery 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 testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API do BigQuery para Java (em inglês).

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 testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API do 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 testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API do BigQuery para PHP (em inglês).

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 testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery 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 testar este exemplo, siga as instruções de configuração do Ruby no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de Referência da API do BigQuery para Ruby (em inglês).

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óximas etapas