Gerenciar conjuntos de dados

Neste documento, descrevemos como copiar conjuntos de dados, recriar conjuntos de dados em outro local, proteger conjuntos de dados, excluir conjuntos de dados e restaurar tabelas de conjuntos de dados excluídos no BigQuery.

Como administrador do BigQuery, é possível organizar e controlar o acesso às tabelas e visualizações que os analistas usam. Para mais informações sobre conjuntos de dados, consulte Introdução aos conjuntos de dados.

Não é possível alterar o nome de um conjunto de dados atual ou realocar um conjunto de dados após a criação. Como alternativa para alterar o nome do conjunto de dados, é possível copiar um conjunto de dados e alterar o nome do conjunto de dados de destino. Para realocar um conjunto de dados, siga um dos seguintes métodos:

Funções exigidas

Nesta seção, descrevemos os papéis e as permissões necessários para gerenciar conjuntos de dados. Se o conjunto de dados de origem ou de destino estiver no mesmo projeto que está sendo usado para a cópia, não serão necessárias permissões ou papéis extras nesse conjunto de dados.

Para conseguir as permissões necessárias para gerenciar conjuntos de dados, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso.

Esses papéis predefinidos contêm as permissões necessárias para gerenciar os conjuntos de dados. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para gerenciar conjuntos de dados:

  • Copiar um conjunto de dados:
    • bigquery.transfers.update no projeto
    • bigquery.jobs.create no projeto
    • bigquery.datasets.get nos conjuntos de dados de origem e de destino
    • bigquery.tables.list nos conjuntos de dados de origem e de destino
    • bigquery.datasets.update no conjunto de dados de destino
    • bigquery.tables.create no conjunto de dados de destino
  • Excluir um conjunto de dados:
    • bigquery.datasets.delete no projeto
    • bigquery.tables.delete no projeto

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Introdução ao IAM.

Copiar conjuntos de dados

É possível copiar um conjunto de dados, incluindo dados particionados em uma região ou entre regiões, sem extrair, mover ou recarregar esses dados no BigQuery. O BigQuery usa o serviço de transferência de dados do BigQuery no back-end para copiar conjuntos de dados. Para considerações de localização ao transferir dados, consulte Local e transferências de dados.

Para cada configuração de cópia de conjunto de dados, é possível executar uma transferência por vez. Execuções de transferência adicionais são enfileiradas. Se você estiver usando o console do Google Cloud, poderá programar cópias recorrentes e configurar um e-mail ou notificações do Pub/Sub com o serviço de transferência de dados do BigQuery.

Limitações

As seguintes limitações se aplicam quando você copia conjuntos de dados:

  • Não é possível usar os seguintes recursos como um conjunto de dados de origem:

    • Visualizações.
    • Tabelas externas.
    • Tabelas criptografadas com chaves criptografadas gerenciadas pelo cliente (CMEK) entre regiões. As tabelas criptografadas por CMEK são ignoradas quando são copiadas entre regiões.

      No entanto, a cópia de tabelas criptografadas, incluindo aquelas criptografadas com CMEK, tem suporte na mesma região. Também é possível copiar tabelas com criptografia padrão entre regiões.

  • Não é possível usar os seguintes recursos como um conjunto de dados de destino:

    • Armazenamento otimizado para gravação.
    • Conjuntos de dados criptografados com CMEK entre regiões.

      No entanto, as tabelas criptografadas com CMEK são permitidas como tabelas de destino quando copiadas na mesma região.

  • A frequência mínima entre jobs de cópia é de 12 horas.

  • Não é possível anexar dados a uma tabela particionada.

  • Se houver uma tabela nos conjuntos de dados de origem e de destino e a tabela de origem não tiver sido alterada desde a última cópia bem-sucedida, ela será ignorada. A tabela de origem será ignorada mesmo se a caixa de seleção Substituir tabelas de destino estiver marcada.

  • Ao truncar tabelas, o job de cópia de conjunto de dados não detecta nenhuma alteração feita no conjunto de dados de destino antes de ser iniciado. O job de cópia de conjunto de dados substitui todos os dados no conjunto de dados de destino, incluindo as tabelas e o esquema.

  • Depois que um job de cópia de tabela é iniciado, a tabela de destino pode não refletir as alterações feitas nas tabelas de origem.

  • A cópia de um conjunto de dados entre regiões é compatível apenas entre as seguintes regiões: US, EU, asia-southeast1, asia-northeast1, europe-west2 e australia-southeast1.

Copiar um conjunto de dados

Selecione uma das seguintes opções:

Console

  1. Ative o serviço de transferência de dados do BigQuery para o conjunto de dados de destino.

    Ativar a API Data Transfer do BigQuery

  2. Verifique se você tem os papéis necessários.

    Se você pretende configurar notificações de execução de transferência do Pub/Sub (opção 2 mais adiante nestas etapas), precisará ter a permissão pubsub.topics.setIamPolicy.

    Se você só configurar notificações por e-mail, as permissões do Pub/Sub não serão necessárias. Para mais informações, consulte as Notificações de execução do serviço de transferência de dados do BigQuery.

  3. Crie um conjunto de dados do BigQuery na mesma região ou em uma diferente do conjunto de dados de origem.

Opção 1: usar a função de cópia do BigQuery

Para criar uma transferência única, use a função de cópia do BigQuery:

  1. Acessar a página do BigQuery.

    Ir para o BigQuery

  2. No painel Explorer, expanda o projeto e selecione um conjunto de dados.

  3. Na seção Informações do conjunto de dados, clique em Copiar e faça o seguinte:

    1. No campo Conjunto de dados, crie um novo conjunto de dados ou selecione um código do conjunto de dados na lista.

      Os nomes dos conjuntos de dados em um projeto precisam ser exclusivos. O projeto e o conjunto de dados podem estar em regiões diferentes, mas nem todas as regiões são compatíveis com a cópia de conjuntos de dados entre regiões.

      No campo Local, é exibido o local do conjunto de dados de origem.

    2. Opcional: para substituir os dados e o esquema das tabelas de destino pelas tabelas de origem, marque a caixa de seleção Substituir tabelas de destino. As tabelas de origem e de destino precisam ter o mesmo esquema de particionamento.

    3. Para copiar o conjunto de dados, clique em Copiar.

Opção 2: usar o serviço de transferência de dados do BigQuery

Para programar cópias recorrentes e configurar notificações por e-mail ou do Pub/Sub, use o serviço de transferência de dados do BigQuery no console do Google Cloud:

  1. Acesse a página Transferências de dados.

    Acesse Transferências de dados

  2. Clique em Criar uma transferência.

  3. Na lista Origem, selecione Cópia do conjunto de dados.

  4. No campo Nome de exibição, digite um nome para a execução da transferência.

  5. Na seção Opções de programação, realize estas ações:

    1. Em Frequência de repetição, escolha uma opção para a frequência de execução da transferência:

      Se você selecionar Personalizado, insira uma frequência personalizada, por exemplo, every day 00:00. Para mais informações, consulte Formatar a programação.

    2. Em Data e hora de início, insira a data e a hora para iniciar a transferência. Se você escolher Iniciar agora, essa opção ficará desativada.

  6. Na seção Configurações de destino, faça o seguinte:

    1. Em Conjunto de dados de origem, digite o ID do conjunto de dados que você quer copiar.
    2. Em Projeto de origem, insira o ID do projeto do conjunto de dados de origem.
  7. Para substituir os dados e o esquema das tabelas de destino pelas tabelas de origem, marque a caixa de seleção Substituir tabelas de destino. As tabelas de origem e de destino precisam ter o mesmo esquema de particionamento.

  8. Opcional: na seção Opções de notificação, faça o seguinte:

    • Para ativar as notificações por e-mail, clique no botão de alternância. Quando você ativa essa opção, o proprietário da configuração de transferência recebe uma notificação por e-mail quando uma execução de transferência falha.
    • Para ativar as notificações do Pub/Sub, clique no botão de alternância e selecione um nome de tópico na lista ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub para a transferência.
  9. Clique em Salvar.

bq

  1. Ative o serviço de transferência de dados do BigQuery para o conjunto de dados de destino.

  2. Verifique se você tem os papéis necessários.

  3. Para criar um conjunto de dados do BigQuery, use o comando bq mk com as sinalizações de criação de conjunto de dados --dataset e location:

    bq mk
      --dataset
      --location=LOCATION \
      PROJECT:DATASET
    

    Substitua:

    • LOCATION: o local em que você quer copiar o conjunto de dados
    • PROJECT: o ID do projeto do conjunto de dados de destino
    • DATASET: o nome do conjunto de dados de destino
  4. Para copiar um conjunto de dados, use o comando bq mk com as sinalizações de criação de transferência --transfer_config e --data_source. Defina a flag --data_source como cross_region_copy. Para uma lista completa de valores válidos para a flag --data_source, consulte as flags de configuração de transferência na referência da ferramenta de linha de comando bq.

    bq mk
      --transfer_config
      --project_id=PROJECT \
      --data_source=cross_region_copy
      --target_dataset=DATASET
      --display_name=NAME
      --params='PARAMETERS'
    

    Substitua:

    • NAME: o nome de exibição do job de cópia ou da configuração de transferência.

    • PARAMETERS: os parâmetros da configuração de transferência no formato JSON

      Os parâmetros de uma configuração de cópia de conjunto de dados incluem o seguinte:

      • source_dataset_id: o ID do conjunto de dados de origem que você quer copiar
      • source_project_id: o ID do projeto que contém o conjunto de dados de origem
      • overwrite_destination_table: uma flag opcional que permite truncar as tabelas de uma cópia anterior e atualizar todos os dados

      As tabelas de origem e de destino precisam ter o mesmo esquema de particionamento.

    Os seguintes exemplos mostram a formatação dos parâmetros com base no ambiente do sistema:

    • Linux: use aspas simples para delimitar a string JSON. Por exemplo:

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • Linha de comando do Windows: use aspas duplas para delimitar a string JSON e faça o escape de aspas duplas na string com uma barra invertida. Por exemplo:

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell: use aspas simples para delimitar a string JSON e faça o escape das aspas duplas na string com uma barra invertida. Por exemplo:

      '{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}'
      

    Por exemplo, o comando a seguir cria uma configuração de cópia de conjunto de dados chamada My Transfer com um conjunto de dados de destino chamado mydataset e um projeto com o ID myproject.

    bq mk
      --transfer_config
      --project_id=myproject \
      --data_source=cross_region_copy
      --target_dataset=mydataset \
      --display_name='My Transfer' \
      --params='{
          "source_dataset_id":"123_demo_eu",
          "source_project_id":"mysourceproject",
          "overwrite_destination_table":"true"
          }'
    

API

  1. Ative o serviço de transferência de dados do BigQuery para o conjunto de dados de destino.

  2. Verifique se você tem os papéis necessários.

  3. Para criar um conjunto de dados do BigQuery, chame o método datasets.insert com um recurso de conjunto de dados definido.

  4. Para copiar um conjunto de dados, use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

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 BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to copy dataset from another gcp project
public class CopyDataset {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String destinationProjectId = "MY_DESTINATION_PROJECT_ID";
    final String destinationDatasetId = "MY_DESTINATION_DATASET_ID";
    final String sourceProjectId = "MY_SOURCE_PROJECT_ID";
    final String sourceDatasetId = "MY_SOURCE_DATASET_ID";
    Map<String, Value> params = new HashMap<>();
    params.put("source_project_id", Value.newBuilder().setStringValue(sourceProjectId).build());
    params.put("source_dataset_id", Value.newBuilder().setStringValue(sourceDatasetId).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(destinationDatasetId)
            .setDisplayName("Your Dataset Copy Name")
            .setDataSourceId("cross_region_copy")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    copyDataset(destinationProjectId, transferConfig);
  }

  public static void copyDataset(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("Copy dataset created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Copy dataset was not created." + ex.toString());
    }
  }
}

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 em Python.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=destination_dataset_id,
    display_name="Your Dataset Copy Name",
    data_source_id="cross_region_copy",
    params={
        "source_project_id": source_project_id,
        "source_dataset_id": source_dataset_id,
    },
    schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
    parent=transfer_client.common_project_path(destination_project_id),
    transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")

Para evitar custos extras de armazenamento, considere a exclusão do conjunto de dados antigo.

Consultar jobs de cópia de conjunto de dados

Para consultar o status e os detalhes de um job de cópia de conjunto de dados no console do Google Cloud, faça o seguinte:

  1. No console do Google Cloud, acesse a página Transferências de dados.

    Acesse Transferências de dados

  2. Selecione uma transferência em que você quer visualizar os detalhes e faça o seguinte:

    1. Na página Detalhes da transferência, selecione uma execução de transferência.

    2. Para atualizar, clique em Atualizar.

Recriar conjuntos de dados em outro local

Para mover manualmente um conjunto de dados de um local para outro, siga estas etapas:

  1. Exporte os dados das tabelas do BigQuery para um bucket do Cloud Storage no mesmo local que o conjunto de dados ou em um local contido no local do conjunto de dados. Por exemplo, se o conjunto de dados estiver no local multirregional EU, será possível exportar os dados para o local europe-west1 da Bélgica, que faz parte da UE.

    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 bucket do Cloud Storage de exportação para um novo bucket criado no local de destino. Por exemplo, se você estiver movendo os dados da multirregião US para a região asia-northeast1 de Tóquio, será necessário transferi-los para um bucket criado em Tóquio. Para informações sobre como transferir objetos do Cloud Storage, consulte Copiar, renomear e mover objetos na documentação do Cloud Storage.

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

  3. Crie um conjunto de dados do BigQuery no novo local e carregue os dados do bucket do Cloud Storage nele.

    Você não será cobrado pelo carregamento dos dados no BigQuery, mas haverá cobranças pelo armazenamento dos dados no Cloud Storage até que os dados ou o bucket 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 aos limites 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.

Proteger conjuntos de dados

Para controlar o acesso a conjuntos de dados no BigQuery, consulte Como controlar o acesso a conjuntos de dados. Para saber mais sobre criptografia de dados, consulte Criptografia em repouso.

Excluir conjuntos de dados

Quando você exclui um conjunto de dados usando o console do Google Cloud, as tabelas e visualizações no conjunto de dados, incluindo os dados, são excluídas. Ao excluir um conjunto de dados usando a ferramenta de linha de comando bq, use a flag -r para excluir as tabelas e visualizações.

Para excluir um conjunto de dados, selecione uma das seguintes opções:

Console

  1. Acessar a página do BigQuery.

    Ir para o BigQuery

  2. No painel Explorer, expanda o projeto e selecione um conjunto de dados.

  3. Expanda a opção Ações e clique em Excluir.

  4. Na caixa de diálogo Excluir conjunto de dados, digite delete no campo e clique em Excluir.

SQL

Para excluir um conjunto de dados, use a instrução DROP SCHEMA.

No exemplo a seguir, um conjunto de dados chamado mydataset é excluído:

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    DROP SCHEMA IF EXISTS mydataset;
    

    Por padrão, isso só funciona para excluir um conjunto de dados vazio. Para excluir um conjunto de dados e todo o conteúdo dele, use a palavra-chave CASCADE:

    DROP SCHEMA IF EXISTS mydataset CASCADE;
    

  3. Clique em Executar.

Para informações sobre como executar consultas, consulte Como executar consultas interativas.

bq

Use o comando bq rm com a flag --dataset ou -d, que é opcional. Se o conjunto de dados contiver tabelas, você precisará usar a flag -r para remover todas as tabelas dele. Se você usar a flag -r, será possível omitir a flag --dataset ou -d.

Depois de executar o comando, o sistema pede confirmação. É possível usar a flag -f para ignorar a confirmação.

Para excluir 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 PROJECT_ID:DATASET

Substitua:

  • PROJECT_ID: ID do projeto
  • DATASET: o nome do conjunto de dados que você está excluindo

Exemplos:

Insira o comando a seguir para remover do projeto padrão um conjunto de dados chamado mydataset e todas as tabelas nele. O comando usa a flag -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 a flag opcional -d. A flag -f é usada para ignorar a confirmação.

bq rm -r -f myotherproject:mydataset

Use o comando bq ls para confirmar se o conjunto de dados foi excluído.

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.

C#

A amostra de código a seguir exclui um conjunto de dados vazio.

Antes de testar esta amostra, siga as instruções de configuração do 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#.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.

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.");
    }
}

Na amostra de código a seguir, um conjunto de dados e todo o conteúdo dele são excluídos:

// Copyright(c) 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteDatasetAndContents
{
    public void DeleteDatasetAndContents(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_with_tables"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Use the DeleteDatasetOptions to delete a dataset and its contents
        client.DeleteDataset(
            datasetId: datasetId,
            options: new DeleteDatasetOptions() { DeleteContents = true }
        );
        Console.WriteLine($"Dataset {datasetId} and contents deleted.");
    }
}

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 em Go.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
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

A amostra de código a seguir exclui um conjunto de dados vazio.

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 BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
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());
    }
  }
}

Na amostra de código a seguir, um conjunto de dados e todo o conteúdo dele são excluídos:

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquery;

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

// Sample to delete dataset with contents.
public class DeleteDatasetAndContents {

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

  public static void deleteDatasetAndContents(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);
      // Use the force parameter to delete a dataset and its contents
      boolean success = bigquery.delete(datasetId, BigQuery.DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted with contents successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted with contents. \n" + e.toString());
    }
  }
}

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 BigQuery em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
// 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 BigQuery em PHP.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
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 em Python.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.

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

A amostra de código a seguir exclui um conjunto de dados vazio.

Antes de testar esta amostra, 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 BigQuery em Ruby.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Instale o cliente Python para a API Data Transfer do BigQuery com pip install google-cloud-bigquery-datatransfer. Em seguida, crie uma configuração de transferência para copiar o conjunto de dados.
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

Na amostra de código a seguir, um conjunto de dados e todo o conteúdo dele são excluídos:

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require "google/cloud/bigquery"

def delete_dataset_and_contents dataset_id = "my_dataset_with_tables"
  bigquery = Google::Cloud::Bigquery.new

  # Use the force parameter to delete a dataset and its contents
  dataset = bigquery.dataset dataset_id
  dataset.delete force: true
  puts "Dataset #{dataset_id} and contents deleted."
end

Restaurar tabelas de conjuntos de dados excluídos

É possível restaurar as tabelas de um conjunto de dados excluído que estejam dentro da janela de viagem no tempo dele. Para restaurar um conjunto de dados excluído, copie cada tabela dele em um novo conjunto de dados usando um decorador de tabela de tempo. É necessário recriar manualmente outros objetos associados ao conjunto de dados, como visualizações, visualizações materializadas e rotinas.

  1. Crie um novo conjunto de dados. Por exemplo, o comando a seguir cria um conjunto de dados chamado mydataset.

    bq mk mydataset
    
  2. Crie um conjunto de dados com o mesmo nome e no mesmo local do original.

  3. Escolha um carimbo de data/hora anterior à exclusão do conjunto de dados original usando um formato de milissegundos desde o período, por exemplo, 1418864998000.

  4. Copie a tabela originaldataset.table1 no momento 1418864998000 para o novo conjunto de dados:

    bq cp originaldataset.table1@1418864998000 mydataset.mytable
    
  5. Repita a etapa 3 para cada tabela no conjunto de dados excluído.

Cotas

Para informações sobre cotas de cópia, consulte Jobs de cópia. O uso de jobs de cópia está disponível no INFORMATION_SCHEMA. Para saber como consultar a visualização INFORMATION_SCHEMA.JOBS, acesse Usar jobs de cópia.

Preços

Não há cobrança pela cópia de um conjunto de dados durante o período Beta. Em disponibilidade geral, as taxas de saída de dados copiados entre regiões ou em várias regiões são cobradas de acordo com as taxas do preço da extração de dados.

Não há cobrança para conjuntos de dados copiados em uma única região ou em várias regiões. Se você copiar um conjunto de dados em uma única região ou em várias regiões, você não receberá cobranças de saída. Quando você copia um conjunto de dados entre regiões, entre uma região e várias regiões ou vice-versa, a saída é cobrada.

O BigQuery envia dados compactados para cópia entre regiões. Portanto, os dados faturados podem ser menores que o tamanho real do conjunto de dados. Para saber mais, acesse a página Preços do BigQuery.

A seguir