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 essa ação, 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.

Também é possível usar o Cloud Composer para mover e copiar grandes conjuntos de dados de maneira programática.

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
  • Usando o comando bq rm na ferramenta de linha de comando bq
  • chame o método de API datasets.delete;
  • usando 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 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 as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como verificar se um conjunto de dados existe

Java

Antes de testar essa amostra, siga as instruções de configuração para 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 BigQuery Java.

Ver no GitHub (em inglês) Feedback
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 testar essa amostra, siga as instruções de configuração para 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 (em inglês).

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

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 ferramenta de linha de comando bq, use 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.

bq

Use o comando bq rm com a sinalização de atalho opcional --dataset ou -d para excluir um conjunto de dados. Ao usar a ferramenta de linha de comando bq para remover um conjunto de dados, você 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 dentro dele.

C#

Antes de testar essa amostra, siga as instruções de configuração para C# 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 em C# (em inglês).


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 testar essa amostra, siga as instruções de configuração para 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 em Go (em inglês).

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 testar essa amostra, siga as instruções de configuração para 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 BigQuery Java.

Ver no GitHub (em inglês) Feedback
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 testar essa amostra, siga as instruções de configuração para 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 BigQuery em Node.js (em inglês).

Ver no GitHub (em inglês) Feedback
// 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 para 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 BigQuery em PHP (em inglês).

Ver no GitHub (em inglês) Feedback
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 essa amostra, siga as instruções de configuração para 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 (em inglês).

Ver no GitHub (em inglês) Feedback

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 testar esta amostra, siga as instruções de configuração para 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 BigQuery em 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

A seguir