Faça a gestão de conjuntos de dados

Este documento descreve como copiar conjuntos de dados, recriar conjuntos de dados noutra localização, proteger conjuntos de dados, eliminar conjuntos de dados e restaurar tabelas de conjuntos de dados eliminados no BigQuery. Para obter informações sobre como restaurar (ou anular a eliminação) de um conjunto de dados eliminado, consulte o artigo Restaure conjuntos de dados eliminados.

Como administrador do BigQuery, pode organizar e controlar o acesso a tabelas e vistas que os analistas usam. Para mais informações sobre conjuntos de dados, consulte o artigo Introdução aos conjuntos de dados.

Não é possível alterar o nome de um conjunto de dados existente nem mudar a localização de um conjunto de dados depois de este ser criado. Como solução alternativa para alterar o nome do conjunto de dados, pode copiar um conjunto de dados e alterar o nome do conjunto de dados de destino. Para mudar um conjunto de dados, pode seguir um dos seguintes métodos:

Funções necessárias

Esta secção descreve as funções e as autorizações de que precisa para gerir conjuntos de dados. Se o conjunto de dados de origem ou de destino estiver no mesmo projeto que o que está a usar para copiar, não precisa de autorizações nem funções adicionais nesse conjunto de dados.

Copie um conjunto de dados

Conceda estas funções para copiar um conjunto de dados. A cópia de conjuntos de dados está atualmente em versão (beta).

Para receber as autorizações de que precisa para copiar conjuntos de dados, peça ao seu administrador que lhe conceda as seguintes funções de IAM:

  • Administrador do BigQuery (roles/bigquery.admin) – o projeto de destino
  • Visualizador de dados do BigQuery (roles/bigquery.dataViewer): o conjunto de dados de origem
  • Editor de dados do BigQuery (roles/bigquery.dataEditor): o conjunto de dados de destino

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para copiar conjuntos de dados. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para copiar conjuntos de dados:

  • bigquery.transfers.update no projeto de destino
  • bigquery.jobs.create no projeto de destino
  • bigquery.datasets.get no conjunto de dados de origem e de destino
  • bigquery.tables.list no conjunto 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Elimine um conjunto de dados

Conceda estas funções para eliminar um conjunto de dados.

Para obter as autorizações de que precisa para eliminar conjuntos de dados, peça ao seu administrador para lhe conceder a função de IAM proprietário de dados do BigQuery (roles/bigquery.dataOwner) no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para eliminar conjuntos de dados. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para eliminar conjuntos de dados:

  • bigquery.datasets.delete no projeto
  • bigquery.tables.delete no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Copie conjuntos de dados

Pode copiar um conjunto de dados, incluindo dados particionados numa região ou em várias regiões, sem extrair, mover nem recarregar dados para o BigQuery. O BigQuery usa o Serviço de transferência de dados do BigQuery no back-end para copiar conjuntos de dados. Para ver considerações de localização quando transfere dados, consulte o artigo Localização e transferências de dados.

Para cada configuração de cópia do conjunto de dados, pode ter uma execução de transferência ativa de cada vez. Execuções de transferência adicionais estão na fila. Se estiver a usar a Google Cloud consola, pode agendar cópias recorrentes e configurar notificações por email ou Pub/Sub com o Serviço de transferência de dados do BigQuery.

Limitações

Aplicam-se as seguintes limitações quando copia conjuntos de dados:

  • Não pode copiar os seguintes recursos de um conjunto de dados de origem:

    • Visualizações.
    • Rotinas, incluindo UDFs.
    • Tabelas externas.
    • Tabelas de captura de alterações de dados (CDC) se o trabalho de cópia abranger várias regiões. A cópia de tabelas de CDC na mesma região é suportada.
    • A tarefa de cópia de tabelas entre regiões não é suportada para tabelas encriptadas com chaves de encriptação geridas pelo cliente (CMEK) quando o conjunto de dados de destino não está encriptado com CMEK e não existe CMEK fornecida. A cópia de tabelas com encriptação predefinida entre regiões é suportada.

      Pode copiar todas as tabelas encriptadas na mesma região, incluindo tabelas encriptadas com CMEK.

  • Não pode usar os seguintes recursos como conjuntos de dados de destino para tarefas de cópia:

    • Armazenamento otimizado para gravação.
    • Conjunto de dados encriptado com CMEK se a tarefa de cópia abranger várias regiões e a tabela de origem não estiver encriptada com CMEK.

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

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

  • Não é suportado anexar dados a uma tabela particionada ou não particionada no conjunto de dados de destino. Se não existirem alterações na tabela de origem, a tabela é ignorada. Se a tabela de origem for atualizada, a tabela de destino é completamente truncada e substituída.

  • Se existir uma tabela no conjunto de dados de origem e no conjunto de dados de destino, e a tabela de origem não tiver sido alterada desde a última cópia bem-sucedida, é ignorada. A tabela de origem é ignorada, mesmo que a caixa de verificação Substituir tabelas de destino esteja selecionada.

  • Quando trunca tabelas no conjunto de dados de destino, a tarefa de cópia do conjunto de dados não deteta alterações feitas aos recursos no conjunto de dados de destino antes de iniciar a tarefa de cópia. A tarefa de cópia do conjunto de dados substitui todos os dados no conjunto de dados de destino, incluindo as tabelas e o esquema.

  • A tabela de destino pode não refletir as alterações feitas às tabelas de origem após o início de uma tarefa de cópia.

  • A cópia de um conjunto de dados não é suportada nas regiões do BigQuery Omni.

  • Para copiar um conjunto de dados para um projeto noutro perímetro de serviço dos VPC Service Controls, tem de definir as seguintes regras de saída:

    • Na configuração do perímetro de serviço dos VPC Service Controls do projeto de destino, o principal do IAM tem de ter os seguintes métodos:

      • bigquery.datasets.get
      • bigquery.tables.list
      • bigquery.tables.get,
      • bigquery.tables.getData
    • Na configuração do perímetro de serviço dos VPC Service Controls do projeto de origem, o principal do IAM que está a ser usado tem de ter o método definido como All Methods.

  • Se tentar atualizar uma configuração de transferência de cópia de conjunto de dados que não lhe pertence, a atualização pode falhar com a seguinte mensagem de erro:

    Cannot modify restricted parameters without taking ownership of the transfer configuration.

    O proprietário da cópia do conjunto de dados é o utilizador associado à cópia do conjunto de dados ou o utilizador que tem acesso à conta de serviço associada à cópia do conjunto de dados. O utilizador associado pode ser visto nos detalhes de configuração da cópia do conjunto de dados. Para ver informações sobre como atualizar a cópia do conjunto de dados para assumir a propriedade, consulte o artigo Atualize as credenciais. Para conceder aos utilizadores acesso a uma conta de serviço, tem de ter a função de utilizador da conta de serviço.

    Os parâmetros restritos do proprietário para cópias do conjunto de dados são:

    • Projeto de origem
    • Conjunto de dados de origem
    • Conjunto de dados de destino
    • Substitua a definição da tabela de destino
  • Aplicam-se todas as limitações de cópia de tabelas entre regiões.

Copie um conjunto de dados

Selecione uma das seguintes opções:

Consola

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

    Ative a API do Serviço de transferência de dados do BigQuery

  2. Certifique-se de que tem as funções necessárias.

    Se pretender configurar notificações de execução de transferências para o Pub/Sub (Opção 2 mais adiante nestes passos), tem de ter a autorização pubsub.topics.setIamPolicy.

    Se configurar apenas notificações por email, não são necessárias autorizações do Pub/Sub. 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 numa região diferente do conjunto de dados de origem.

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

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

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

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

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

    1. No campo Conjunto de dados, crie um novo conjunto de dados ou selecione um ID de conjunto de dados existente na lista.

      Os nomes dos conjuntos de dados num projeto têm de ser exclusivos. O projeto e o conjunto de dados podem estar em regiões diferentes, mas nem todas as regiões são suportadas para a cópia de conjuntos de dados entre regiões.

      No campo Localização, é apresentada a localização do conjunto de dados de origem.

    2. Opcional: para substituir os dados e o esquema das tabelas de destino pelas tabelas de origem, selecione a caixa de verificação Substituir tabelas de destino. As tabelas de origem e de destino têm de ter o mesmo esquema de particionamento.

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

Opção 2: use o Serviço de transferência de dados do BigQuery

Para agendar cópias recorrentes e configurar notificações por email ou Pub/Sub, use o Serviço de transferência de dados do BigQuery na Google Cloud consola do projeto de destino:

  1. Aceda à página Transferências de dados.

    Aceda a 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 a apresentar, introduza um nome para a execução da transferência.

  5. Na secção Opções de agendamento, faça o seguinte:

    1. Para Frequência de repetição, escolha uma opção para a frequência com que a transferência é executada:

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

    2. Para Data de início e tempo de execução, introduza a data e a hora de início da transferência. Se escolher Começar agora, esta opção é desativada.

  6. Na secção Definições de destino, selecione um conjunto de dados de destino para armazenar os dados de transferência. Também pode clicar em CRIAR NOVO CONJUNTO DE DADOS para criar um novo conjunto de dados antes de o selecionar para esta transferência.

  7. Na secção Detalhes da origem de dados, introduza as seguintes informações:

    1. Para Conjunto de dados de origem, introduza o ID do conjunto de dados que quer copiar.
    2. Para o Projeto de origem, introduza o ID do projeto do conjunto de dados de origem.
  8. Para substituir os dados e o esquema das tabelas de destino pelas tabelas de origem, selecione a caixa de verificação Substituir tabelas de destino. As tabelas de origem e de destino têm de ter o mesmo esquema de particionamento.

  9. No menu Conta de serviço, selecione uma conta de serviço das contas de serviço associadas ao seu Google Cloud projeto. Pode associar uma conta de serviço à sua transferência em vez de usar as suas credenciais de utilizador. Para mais informações sobre a utilização de contas de serviço com transferências de dados, consulte o artigo Utilize contas de serviço.

    • Se iniciou sessão com uma identidade federada, é necessária uma conta de serviço para criar uma transferência. Se tiver iniciado sessão com uma Conta Google, uma conta de serviço para a transferência é opcional.
    • A conta de serviço tem de ter as funções necessárias.
  10. Opcional: na secção Opções de notificação, faça o seguinte:

    • Para ativar as notificações por email, clique no botão para ativar/desativar. Quando ativa esta opção, o proprietário da configuração de transferência recebe uma notificação por email quando uma execução de transferência falha.
    • Para ativar as notificações do Pub/Sub, clique no botão para ativar/desativar e, de seguida, selecione um nome de tópico na lista ou clique em Criar um tópico. Esta opção configura notificações executadas pelo Pub/Sub para a transferência.
  11. Clique em Guardar.

bq

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

  2. Certifique-se de que tem as funções necessárias.

  3. Para criar um conjunto de dados do BigQuery, use o comandobq mk com a flag de criação do conjunto de dados --dataset e a flag location:

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

    Substitua o seguinte:

    • LOCATION: a localização para onde 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 a flag de criação de transferência --transfer_config e a flag --data_source. Tem de definir o sinalizador --data_source como cross_region_copy. Para ver uma lista completa de valores válidos para a flag --data_source, consulte as flags transfer-config na referência da ferramenta de linhas de comando bq.

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

    Substitua o seguinte:

    • NAME: o nome a apresentar para a tarefa de cópia ou a configuração de transferência

    • SERVICE_ACCOUNT: o nome da conta de serviço usado para autenticar a sua transferência. A conta de serviço deve ser propriedade do mesmo project_id usado para criar a transferência e deve ter todas as autorizações necessárias.

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

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

      • source_dataset_id: o ID do conjunto de dados de origem que quer copiar
      • source_project_id: o ID do projeto em que o conjunto de dados de origem se encontra
      • overwrite_destination_table: um indicador opcional que lhe permite truncar as tabelas de uma cópia anterior e atualizar todos os dados

      As tabelas de origem e de destino têm de ter o mesmo esquema de particionamento.

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

    • Linux: use aspas simples para incluir a string JSON, por exemplo:

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • Linha de comandos do Windows: use aspas duplas para incluir a string JSON e escape as aspas duplas na string com uma barra invertida, por exemplo:

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell: use plicas para incluir a string JSON e escape as 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 seguinte cria uma configuração de cópia do conjunto de dados denominada My Transfer com um conjunto de dados de destino denominado mydataset e um projeto com o ID de 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. Certifique-se de que tem as funções necessárias.

  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 experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

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 experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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 de armazenamento adicionais, considere eliminar o conjunto de dados anterior.

Veja tarefas de cópia de conjuntos de dados

Para ver o estado e os detalhes de uma tarefa de cópia de conjunto de dados na Google Cloud consola, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Transferências de dados.

    Aceda a Transferências de dados

  2. Selecione uma transferência para a qual quer ver os detalhes da transferência e, de seguida, 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.

Recrie conjuntos de dados noutra localização

Para mover manualmente um conjunto de dados de uma localização para outra, siga estes passos:

  1. Exporte os dados das tabelas do BigQuery para um contentor do Cloud Storage.

    Não existem cobranças pela exportação de dados do BigQuery, mas incorre em cobranças pelo armazenamento dos dados exportados no Cloud Storage. As exportações do BigQuery estão sujeitas aos limites de tarefas de exportação.

  2. Copie ou mova os dados do contentor do Cloud Storage de exportação para um novo contentor que criou na localização de destino. Por exemplo, se estiver a mover os seus dados da região US multi-região para a região asia-northeast1 de Tóquio, transfere os dados para um contentor que criou em Tóquio. Para obter informações sobre a transferência de objetos do Cloud Storage, consulte o artigo Copie, mude o nome e mova objetos na documentação do Cloud Storage.

    A transferência de dados entre regiões incorre em custos de saída da rede no Cloud Storage.

  3. Crie um novo conjunto de dados do BigQuery na nova localização e, em seguida, carregue os seus dados do contentor do Cloud Storage para o novo conjunto de dados.

    Não lhe é cobrado o carregamento dos dados para o BigQuery, mas incorre em custos pelo armazenamento dos dados no Cloud Storage até eliminar os dados ou o contentor. Também lhe é cobrado o armazenamento dos dados no BigQuery depois de carregados. O carregamento de dados no BigQuery está sujeito aos limites de tarefas de carregamento.

Também pode usar o Cloud Composer para mover e copiar grandes conjuntos de dados de forma programática.

Para mais informações sobre a utilização do Cloud Storage para armazenar e mover grandes conjuntos de dados, consulte o artigo Use o Cloud Storage com Big Data.

Conjuntos de dados seguros

Para controlar o acesso a conjuntos de dados no BigQuery, consulte o artigo Controlar o acesso a conjuntos de dados. Para obter informações sobre a encriptação de dados, consulte o artigo Encriptação em repouso.

Eliminar conjuntos de dados

Quando elimina um conjunto de dados através da Google Cloud consola, as tabelas e as vistas no conjunto de dados, incluindo os respetivos dados, são eliminadas. Quando elimina um conjunto de dados através da ferramenta de linhas de comando bq, tem de usar a flag -r para eliminar as tabelas e as vistas.

A eliminação de um conjunto de dados cria uma entrada do registo de auditoria para a eliminação do conjunto de dados. Não cria entradas de registo separadas para cada tabela eliminada no conjunto de dados.

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

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

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

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

  4. Na caixa de diálogo Eliminar conjunto de dados, escreva delete no campo e, de seguida, clique em Eliminar.

SQL

Para eliminar um conjunto de dados, use a declaração DDL DROP SCHEMA.

O exemplo seguinte elimina um conjunto de dados denominado mydataset:

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    DROP SCHEMA IF EXISTS mydataset;

    Por predefinição, esta ação só funciona para eliminar um conjunto de dados vazio. Para eliminar um conjunto de dados e todos os respetivos conteúdos, use a palavra-chave CASCADE

    DROP SCHEMA IF EXISTS mydataset CASCADE;

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

bq

Use o comando bq rm com a flag --dataset ou -d, que é opcional. Se o conjunto de dados contiver tabelas, tem de usar a flag -r para remover todas as tabelas no conjunto de dados. Se usar a sinalização -r, pode omitir a sinalização --dataset ou -d.

Depois de executar o comando, o sistema pede uma confirmação. Pode usar a flag -f para ignorar a confirmação.

Se estiver a eliminar uma tabela num projeto que não seja o projeto predefinido, 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 o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • DATASET: o nome do conjunto de dados que está a eliminar

Exemplos:

Introduza o seguinte comando para remover um conjunto de dados com o nome mydataset e todas as tabelas no mesmo do seu projeto predefinido. O comando usa a flag -d.

bq rm -r -d mydataset

Quando lhe for pedido, escreva y e prima Enter.

Introduza o seguinte comando para remover mydataset e todas as tabelas no mesmo de myotherproject. O comando não usa a flag -d opcional. A flag -f é usada para ignorar a confirmação.

bq rm -r -f myotherproject:mydataset

Pode usar o comando bq ls para confirmar que o conjunto de dados foi eliminado.

API

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

C#

O seguinte exemplo de código elimina um conjunto de dados vazio.

Antes de experimentar este exemplo, siga as C#instruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API C# BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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.");
    }
}

O seguinte exemplo de código elimina um conjunto de dados e todos os respetivos conteú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.");
    }
}

Ir

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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

O seguinte exemplo de código elimina um conjunto de dados vazio.

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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());
    }
  }
}

O seguinte exemplo de código elimina um conjunto de dados e todos os respetivos conteú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 experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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 experimentar este exemplo, siga as PHPinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API PHP BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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 experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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

O seguinte exemplo de código elimina um conjunto de dados vazio.

Antes de experimentar este exemplo, siga as Rubyinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Ruby BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Instale o cliente Python para a API BigQuery Data Transfer 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

O seguinte exemplo de código elimina um conjunto de dados e todos os respetivos conteú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

Restaure tabelas de conjuntos de dados eliminados

Pode restaurar tabelas de um conjunto de dados eliminado que estejam dentro do período de viagem no tempo do conjunto de dados. Para restaurar o conjunto de dados completo, consulte o artigo Restaure conjuntos de dados eliminados.

  1. Crie um conjunto de dados com o mesmo nome e na mesma localização que o original.
  2. Escolha uma indicação de tempo anterior à eliminação do conjunto de dados original usando um formato de milissegundos desde a época, por exemplo, 1418864998000.
  3. Copie a tabela originaldataset.table1 no momento 1418864998000 para o novo conjunto de dados:

    bq cp originaldataset.table1@1418864998000 mydataset.mytable
    

    Para encontrar os nomes das tabelas não vazias que estavam no conjunto de dados eliminado, consulte a vista INFORMATION_SCHEMA.TABLE_STORAGE do conjunto de dados na janela de viagem no tempo.

Restaure conjuntos de dados eliminados

Para saber como restaurar (ou anular a eliminação) de um conjunto de dados eliminado, consulte o artigo Restaure conjuntos de dados eliminados.

Quotas

Para informações sobre as quotas de cópia, consulte o artigo Tarefas de cópia. As estatísticas de utilização para tarefas de cópia estão disponíveis no INFORMATION_SCHEMA. Para saber como consultar a vista INFORMATION_SCHEMA.JOBS, consulte a vista JOBS.

Preços

Para informações de preços sobre a cópia de conjuntos de dados, consulte os preços da replicação de dados.

O BigQuery envia dados comprimidos para a cópia entre regiões, pelo que os dados faturados podem ser inferiores ao tamanho real do seu conjunto de dados. Para mais informações, consulte os preços do BigQuery.

O que se segue?