Gestisci i set di dati

Questo documento descrive come copiare i set di dati, ricrearli in un'altra località, proteggerli, eliminarli e ripristinare le tabelle dai set di dati eliminati in BigQuery. Per informazioni su come ripristinare (o annullare l'eliminazione) di un set di dati eliminato, consulta Ripristina i set di dati eliminati.

In qualità di amministratore BigQuery, puoi organizzare e controllare l'accesso a tabelle e viste che gli analisti utilizzano. Per saperne di più sui set di dati, consulta Introduzione ai set di dati.

Non puoi modificare il nome di un set di dati esistente o spostarlo dopo la sua creazione. Come soluzione alternativa per modificare il nome del set di dati, puoi copiare un set di dati e modificare il nome del set di dati di destinazione. Per spostare un set di dati, puoi utilizzare uno dei seguenti metodi:

Ruoli obbligatori

Questa sezione descrive i ruoli e le autorizzazioni necessari per gestire i set di dati. Se il set di dati di origine o di destinazione si trova nello stesso progetto di quello che utilizzi per la copia, non sono necessarie autorizzazioni o ruoli aggiuntivi per quel set di dati.

Copia un set di dati

Concedi questi ruoli per copiare un set di dati. La copia dei set di dati è in versione (beta).

Per ottenere le autorizzazioni necessarie per copiare i set di dati, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Amministratore BigQuery (roles/bigquery.admin): il progetto di destinazione
  • BigQuery Data Viewer (roles/bigquery.dataViewer): il set di dati di origine

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per copiare i set di dati. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per copiare i set di dati sono necessarie le seguenti autorizzazioni:

  • bigquery.transfers.update sul progetto di destinazione
  • bigquery.jobs.create sul progetto di destinazione
  • bigquery.datasets.get sul set di dati di origine e destinazione
  • bigquery.tables.list sul set di dati di origine e di destinazione
  • bigquery.datasets.update nel set di dati di destinazione
  • bigquery.tables.create nel set di dati di destinazione

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Eliminazione di un set di dati

Concedi questi ruoli per eliminare un set di dati.

Per ottenere le autorizzazioni necessarie per eliminare i set di dati, chiedi all'amministratore di concederti il ruolo IAM Proprietario dati BigQuery (roles/bigquery.dataOwner) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per eliminare i set di dati. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per eliminare i set di dati sono necessarie le seguenti autorizzazioni:

  • bigquery.datasets.delete sul progetto
  • bigquery.tables.delete sul progetto

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Copia set di dati

Puoi copiare un set di dati, inclusi i dati partizionati all'interno di una regione o tra regioni, senza estrarre, spostare o ricaricare i dati in BigQuery. BigQuery utilizza BigQuery Data Transfer Service nel backend per copiare i set di dati. Per considerazioni sulla località quando trasferisci i dati, consulta Posizione dei dati e trasferimenti.

Per ogni configurazione di copia del set di dati, puoi avere un'esecuzione del trasferimento attiva alla volta. Le esecuzioni di trasferimento aggiuntive vengono messe in coda. Se utilizzi la console Google Cloud , puoi pianificare copie ricorrenti e configurare notifiche via email o Pub/Sub con BigQuery Data Transfer Service.

Limitazioni

Quando copi i set di dati, si applicano le seguenti limitazioni:

  • Non puoi copiare le seguenti risorse da un set di dati di origine:

    • Visualizzazioni.
    • Routine, incluse le funzioni definite dall'utente.
    • Tabelle esterne.
    • Tabelle Change Data Capture (CDC) se il job di copia viene eseguito tra regioni. La copia di tabelle CDC all'interno della stessa regione è supportata.
    • Il job di copia delle tabelle tra regioni non è supportato per le tabelle criptate con chiavi di crittografia gestite dal cliente (CMEK) quando il set di dati di destinazione non è criptato con CMEK e non viene fornita alcuna CMEK. La copia di tabelle con crittografia predefinita tra regioni è supportata.

      Puoi copiare tutte le tabelle criptate all'interno della stessa regione, incluse quelle criptate con CMEK.

  • Non puoi utilizzare le seguenti risorse come set di dati di destinazione per i job di copia:

    • Spazio di archiviazione ottimizzato per la scrittura.
    • Set di dati criptato con CMEK se il job di copia si estende su più regioni e la tabella di origine non è criptata con CMEK.

      Tuttavia, le tabelle criptate con CMEK sono consentite come tabelle di destinazione durante la copia all'interno della stessa regione.

  • La frequenza minima tra i job di copia è di 12 ore.

  • L'aggiunta di dati a una tabella partizionata o non partizionata nel set di dati di destinazione non è supportata. Se non sono presenti modifiche nella tabella di origine, la tabella viene ignorata. Se la tabella di origine viene aggiornata, la tabella di destinazione viene completamente troncata e sostituita.

  • Se una tabella esiste nel set di dati di origine e in quello di destinazione e la tabella di origine non è cambiata dall'ultima copia riuscita, viene saltata. La tabella di origine viene ignorata anche se è selezionata la casella di controllo Sovrascrivi tabelle di destinazione.

  • Quando tronca le tabelle nel set di dati di destinazione, il job di copia del set di dati non rileva le modifiche apportate alle risorse nel set di dati di destinazione prima di iniziare il job di copia. Il job di copia del set di dati sovrascrive tutti i dati nel set di dati di destinazione, incluse le tabelle e lo schema.

  • La tabella di destinazione potrebbe non riflettere le modifiche apportate alle tabelle di origine dopo l'avvio di un job di copia.

  • La copia di un set di dati non è supportata nelle regioni BigQuery Omni.

  • Per copiare un set di dati in un progetto in un altro perimetro di servizio dei Controlli di servizio VPC, devi impostare le seguenti regole in uscita:

    • Nella configurazione del perimetro di servizio dei Controlli di servizio VPC del progetto di destinazione, l'entità IAM deve disporre dei seguenti metodi:

      • bigquery.datasets.get
      • bigquery.tables.list
      • bigquery.tables.get,
      • bigquery.tables.getData
    • Nella configurazione del perimetro di servizio Controlli di servizio VPC del progetto di origine, l'entità IAM utilizzata deve avere il metodo impostato su All Methods.

  • Se provi ad aggiornare una configurazione del trasferimento di copia del set di dati di cui non sei proprietario, l'aggiornamento potrebbe non riuscire con il seguente messaggio di errore:

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

    Il proprietario della copia del set di dati è l'utente associato alla copia del set di dati o l'utente che ha accesso alaccount di serviziot associato alla copia del set di dati. L'utente associato può essere visualizzato nei dettagli di configurazione della copia del set di dati. Per informazioni su come aggiornare la copia del set di dati per acquisire la proprietà, vedi Aggiorna le credenziali. Per concedere agli utenti l'accesso a un account di servizio, devi disporre del ruolo Utente service account.

    I parametri limitati dal proprietario per le copie dei set di dati sono:

    • Progetto di origine
    • Set di dati di origine
    • Set di dati di destinazione
    • Impostazione Sovrascrivi tabella di destinazione
  • Si applicano tutte le limitazioni alla copia delle tabelle tra regioni.

Copia un set di dati

Seleziona una delle seguenti opzioni:

Console

  1. Attiva BigQuery Data Transfer Service per il set di dati di destinazione.

    Abilita l'API BigQuery Data Transfer Service

  2. Assicurati di disporre dei ruoli richiesti.

    Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub (Opzione 2 più avanti in questi passaggi), devi disporre dell'autorizzazione pubsub.topics.setIamPolicy.

    Se configuri solo le notifiche via email, le autorizzazioni Pub/Sub non sono necessarie. Per saperne di più, consulta le notifiche di esecuzione di BigQuery Data Transfer Service.

  3. Crea un set di dati BigQuery nella stessa regione o in una regione diversa rispetto al set di dati di origine.

Opzione 1: utilizzare la funzione di copia di BigQuery

Per creare un trasferimento una tantum, utilizza la funzione di copia di BigQuery:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

    Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro sinistro per aprirlo.

  3. Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e seleziona un set di dati.

  4. Nella sezione Informazioni sul set di dati, fai clic su Copia, quindi segui questi passaggi:

    1. Nel campo Set di dati, crea un nuovo set di dati o seleziona un ID set di dati esistente dall'elenco.

      I nomi dei set di dati all'interno di un progetto devono essere univoci. Il progetto e il set di dati possono trovarsi in regioni diverse, ma non tutte le regioni sono supportate per la copia dei set di dati tra regioni.

      Nel campo Località viene visualizzata la località del set di dati di origine.

    2. (Facoltativo) Per sovrascrivere sia i dati che lo schema delle tabelle di destinazione con le tabelle di origine, seleziona la casella di controllo Sovrascrivi tabelle di destinazione. Sia la tabella di origine che quella di destinazione devono avere lo stesso schema di partizionamento.

    3. Per copiare il set di dati, fai clic su Copia.

Opzione 2: utilizza BigQuery Data Transfer Service

Per pianificare copie ricorrenti e configurare notifiche email o Pub/Sub, utilizza BigQuery Data Transfer Service nella console Google Cloud del progetto di destinazione:

  1. Vai alla pagina Trasferimenti di dati.

    Vai a Trasferimenti di dati

  2. Fai clic su Crea un trasferimento.

  3. Nell'elenco Origine, seleziona Copia del set di dati.

  4. Nel campo Nome visualizzato, inserisci un nome per l'esecuzione del trasferimento.

  5. Nella sezione Opzioni di pianificazione, segui questi passaggi:

    1. Per Frequenza di ripetizione, scegli un'opzione per la frequenza con cui eseguire il trasferimento:

      Se selezioni Personalizzata, inserisci una frequenza personalizzata, ad esempio every day 00:00. Per saperne di più, vedi Formattare la pianificazione.

    2. In Data di inizio e ora esecuzione, inserisci la data e l'ora di inizio del trasferimento. Se scegli Inizia ora, questa opzione è disabilitata.

  6. Nella sezione Impostazioni destinazione, seleziona un set di dati di destinazione per archiviare i dati del trasferimento. Puoi anche fare clic su CREA NUOVO DATASET per creare un nuovo set di dati prima di selezionarlo per questo trasferimento.

  7. Nella sezione Dettagli origine dati, inserisci le seguenti informazioni:

    1. In Set di dati di origine, inserisci l'ID del set di dati che vuoi copiare.
    2. In Progetto di origine, inserisci l'ID progetto del set di dati di origine.
  8. Per sovrascrivere sia i dati che lo schema delle tabelle di destinazione con le tabelle di origine, seleziona la casella di controllo Sovrascrivi tabelle di destinazione. Le tabelle di origine e di destinazione devono avere lo stesso schema di partizionamento.

  9. Nel menu Service account, seleziona un service account tra quelli associati al tuo progettoGoogle Cloud . Puoi associare un account di servizio al trasferimento anziché utilizzare le tue credenziali utente. Per ulteriori informazioni sull'utilizzo dei service account con i trasferimenti di dati, consulta Utilizza i service account.

    • Se hai eseguito l'accesso con un'identità federata, è necessario un account di servizio per creare un trasferimento. Se hai eseguito l'accesso con un Account Google, il service account per il trasferimento è facoltativo.
    • Il account di servizio deve disporre dei ruoli richiesti.
  10. (Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:

    • Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione. Quando attivi questa opzione, il proprietario della configurazione del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
    • Per attivare le notifiche Pub/Sub, fai clic sul pulsante di attivazione/disattivazione, quindi seleziona un nome per l'argomento dall'elenco o fai clic su Crea un argomento. Questa opzione configura l'esecuzione delle notifiche di Pub/Sub in relazione al trasferimento.
  11. Fai clic su Salva.

bq

  1. Attiva BigQuery Data Transfer Service per il set di dati di destinazione.

  2. Assicurati di disporre dei ruoli richiesti.

  3. Per creare un set di dati BigQuery, utilizza il comando bq mk con il flag di creazione del set di dati --dataset e il flag location:

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

    Sostituisci quanto segue:

    • LOCATION: la località in cui vuoi copiare il set di dati
    • PROJECT: l'ID progetto del set di dati di destinazione
    • DATASET: il nome del set di dati di destinazione
  4. Per copiare un set di dati, utilizza il comando bq mk con il flag di creazione del trasferimento --transfer_config e il flag --data_source. Devi impostare il flag --data_source su cross_region_copy. Per un elenco completo dei valori validi per il flag --data_source, consulta i flag transfer-config nel riferimento allo strumento a riga di 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'

    Sostituisci quanto segue:

    • NAME: il nome visualizzato per il job di copia o la configurazione di trasferimento

    • SERVICE_ACCOUNT: il nome del account di servizio utilizzato per autenticare il trasferimento. Il account di servizio deve essere di proprietà dello stesso project_id utilizzato per creare il trasferimento e deve disporre di tutte le autorizzazioni richieste.

    • PARAMETERS: i parametri per la configurazione del trasferimento in formato JSON

      I parametri per una configurazione di copia del set di dati includono:

      • source_dataset_id: l'ID del set di dati di origine che vuoi copiare
      • source_project_id: l'ID del progetto in cui si trova il set di dati di origine
      • overwrite_destination_table: un flag facoltativo che consente di troncare le tabelle di una copia precedente e aggiornare tutti i dati

      Sia la tabella di origine che quella di destinazione devono avere lo stesso schema di partizionamento.

    I seguenti esempi mostrano la formattazione dei parametri in base all'ambiente del tuo sistema:

    • Linux:utilizza gli apici singoli per racchiudere la stringa JSON, ad esempio:

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • Riga di comando di Windows: utilizza le virgolette doppie per racchiudere la stringa JSON ed esegui l'escape delle virgolette doppie nella stringa con una barra rovesciata, ad esempio:

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell:utilizza le virgolette singole per racchiudere la stringa JSON ed esegui l'escape delle virgolette doppie nella stringa con una barra rovesciata, ad esempio:

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

    Ad esempio, il seguente comando crea una configurazione di copia del set di dati denominata My Transfer con un set di dati di destinazione denominato mydataset e un progetto con l'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. Attiva BigQuery Data Transfer Service per il set di dati di destinazione.

  2. Assicurati di disporre dei ruoli richiesti.

  3. Per creare un set di dati BigQuery, chiama il metodo datasets.insert con una risorsa del set di dati definita.

  4. Per copiare un set di dati, utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Quindi, crea una configurazione del trasferimento per copiare il set di dati.
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}")

Per evitare costi di archiviazione aggiuntivi, valuta la possibilità di eliminare il set di dati precedente.

Visualizza job di copia del set di dati

Per visualizzare lo stato e i dettagli di un job di copia del set di dati nella consoleGoogle Cloud :

  1. Nella console Google Cloud , vai alla pagina Trasferimenti di dati.

    Vai a Trasferimenti dati

  2. Seleziona un trasferimento di cui vuoi visualizzare i dettagli e poi procedi come segue:

    1. Nella pagina Dettagli trasferimento, seleziona un'esecuzione del trasferimento.

    2. Per aggiornare, fai clic su Aggiorna.

Ricrea i set di dati in un'altra posizione

Per spostare manualmente un set di dati da una località a un'altra, segui questi passaggi:

  1. Esporta i dati dalle tabelle BigQuery in un bucket Cloud Storage.

    Non sono previsti addebiti per l'esportazione dei dati da BigQuery, ma vengono addebitati costi per l'archiviazione dei dati esportati in Cloud Storage. Le esportazioni BigQuery sono soggette ai limiti per i job di estrazione.

  2. Copia o sposta i dati dal bucket Cloud Storage di esportazione a un nuovo bucket creato nella posizione di destinazione. Ad esempio, se stai spostando i dati dalla multiregione US alla regione di Tokyo asia-northeast1, trasferirai i dati in un bucket che hai creato a Tokyo. Per informazioni sul trasferimento di oggetti Cloud Storage, consulta Copia, ridenomina e sposta gli oggetti nella documentazione di Cloud Storage.

    Il trasferimento di dati tra regioni comporta costi per il traffico di rete in uscita in Cloud Storage.

  3. Crea un nuovo set di dati BigQuery nella nuova località, quindi carica i dati dal bucket Cloud Storage nel nuovo set di dati.

    Non ti verrà addebitato alcun costo per il caricamento dei dati in BigQuery, ma ti verranno addebitati i costi per l'archiviazione dei dati in Cloud Storage fino a quando non elimini i dati o il bucket. Ti vengono addebitati anche i costi di archiviazione dei dati in BigQuery dopo il caricamento. Il caricamento dei dati in BigQuery è soggetto ai limiti dei job di caricamento.

Puoi anche utilizzare Managed Service for Apache Airflow per spostare e copiare set di dati di grandi dimensioni in modo programmatico.

Per saperne di più sull'utilizzo di Cloud Storage per archiviare e spostare set di dati di grandi dimensioni, consulta Utilizza Cloud Storage con i big data.

Set di dati sicuri

Per controllare l'accesso ai set di dati in BigQuery, vedi Controllare l'accesso ai set di dati. Per informazioni sulla crittografia dei dati, vedi Crittografia at-rest.

Elimina set di dati

Quando elimini un set di dati utilizzando la console Google Cloud , le tabelle e le viste nel set di dati, inclusi i relativi dati, vengono eliminate automaticamente. Tuttavia, quando utilizzi un altro metodo, devi prima svuotare il set di dati o specificare i flag, i parametri o le parole chiave corrispondenti che forzano la rimozione dei contenuti del set di dati.

Se tenti di eliminare un set di dati non vuoto senza i flag o i parametri appropriati, l'operazione non va a buon fine e viene visualizzato il seguente errore: Dataset project:dataset is still in use.

Se tenti di eliminare un set di dati che non esiste, l'operazione non va a buon fine e viene generato un errore Not found, a meno che non specifichi un'opzione per ignorare i set di dati mancanti, ad esempio IF EXISTS in GoogleSQL o il flag -f (--force) nello strumento a riga di comando bq.

L'eliminazione di un set di dati crea una voce di audit log per l'eliminazione del set di dati. Non crea voci di log separate per ogni tabella eliminata all'interno del set di dati.

Per eliminare un set di dati, seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

  3. Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi sul set di dati.

  4. Nel riquadro dei dettagli, fai clic su Elimina.

  5. Nella finestra di dialogo Elimina set di dati, digita delete nel campo e fai clic su Elimina.

SQL

Per eliminare un set di dati, utilizza l'istruzione DDL DROP SCHEMA.

L'esempio seguente elimina un set di dati denominato mydataset:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    DROP SCHEMA IF EXISTS mydataset;

    La clausola IF EXISTS impedisce un errore se il set di dati non esiste. Senza IF EXISTS, il tentativo di eliminare un set di dati che non esiste restituisce un errore Not found.

    Per impostazione predefinita, DROP SCHEMA elimina solo un set di dati vuoto. Per eliminare un set di dati e tutti i relativi contenuti, utilizza la parola chiave CASCADE:

    DROP SCHEMA IF EXISTS mydataset CASCADE;

  3. Fai clic su Esegui.

Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.

bq

Utilizza il comando bq rm con il flag --dataset o -d, che è facoltativo. Se il set di dati contiene tabelle, devi utilizzare il flag -r per rimuovere tutte le tabelle nel set di dati. Se utilizzi il flag -r, puoi omettere il flag --dataset o -d.

Dopo aver eseguito il comando, il sistema chiede conferma. Puoi utilizzare il flag -f (o --force) per saltare la conferma e ignorare gli errori Not found se il set di dati non esiste. Senza il flag -f, il tentativo di eliminare un set di dati inesistente non va a buon fine e viene visualizzato un errore Not found.

Se elimini una tabella in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET.

bq rm -r -f -d PROJECT_ID:DATASET

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • DATASET: il nome del set di dati che stai eliminando

Esempi:

Inserisci il seguente comando per rimuovere un set di dati denominato mydataset e tutte le tabelle al suo interno dal progetto predefinito. Il comando utilizza il flag -d.

bq rm -r -d mydataset

Quando richiesto, digita y e premi Invio.

Inserisci il seguente comando per rimuovere mydataset e tutte le tabelle al suo interno da myotherproject. Il comando non utilizza il flag facoltativo -d. Il flag -f viene utilizzato per ignorare la conferma.

bq rm -r -f myotherproject:mydataset

Puoi utilizzare il comando bq ls per verificare che il set di dati sia stato eliminato.

API

Chiama il metodo datasets.delete per eliminare il set di dati e imposta il parametro deleteContents su true per eliminare le tabelle al suo interno. Se il set di dati specificato non esiste, il metodo restituisce un errore 404 Not Found.

C#

Il seguente esempio di codice elimina un set di dati vuoto.

Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery C#.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Quindi crea una configurazione del trasferimento per copiare il set di dati.

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

Il seguente esempio di codice elimina un set di dati e tutti i relativi contenuti:

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

Vai

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Poi crea una configurazione del trasferimento per copiare il set di dati.
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

Il seguente esempio di codice elimina un set di dati vuoto.

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Poi crea una configurazione del trasferimento per copiare il set di dati.
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());
    }
  }
}

Il seguente esempio di codice elimina un set di dati e tutti i relativi contenuti:

/*
 * 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

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Quindi, crea una configurazione del trasferimento per copiare il set di dati.
// 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

Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery PHP.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Quindi crea una configurazione del trasferimento per copiare il set di dati.
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

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Poi crea una configurazione del trasferimento per copiare il set di dati.

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

Il seguente esempio di codice elimina un set di dati vuoto.

Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Ruby.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Installa il client Python per l'API BigQuery Data Transfer con pip install google-cloud-bigquery-datatransfer. Poi crea una configurazione del trasferimento per copiare il set di dati.
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

Il seguente esempio di codice elimina un set di dati e tutti i relativi contenuti:

# 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

Ripristina le tabelle dai set di dati eliminati

Puoi ripristinare le tabelle di un set di dati eliminato che si trovano all'interno della finestra di spostamento cronologico del set di dati. Per ripristinare l'intero set di dati, consulta Ripristinare i set di dati eliminati.

  1. Crea un set di dati con lo stesso nome e nella stessa località dell'originale.
  2. Scegli un timestamp precedente all'eliminazione del set di dati originale utilizzando un formato di millisecondi dall'epoca, ad esempio 1418864998000.
  3. Copia la tabella originaldataset.table1 al momento 1418864998000 nel nuovo set di dati:

    bq cp originaldataset.table1@1418864998000 mydataset.mytable
    

    Per trovare i nomi delle tabelle non vuote che si trovavano nel set di dati eliminato, interroga la visualizzazione INFORMATION_SCHEMA.TABLE_STORAGE del set di dati all'interno della finestra di spostamento cronologico.

Ripristina i set di dati eliminati

Per scoprire come ripristinare (o annullare l'eliminazione) di un set di dati eliminato, consulta Ripristina i set di dati eliminati.

Quote

Per informazioni sulle quote di copia, consulta Job di copia. L'utilizzo per i job di copia è disponibile in INFORMATION_SCHEMA. Per scoprire come eseguire query sulla vista INFORMATION_SCHEMA.JOBS, consulta Vista JOBS.

Prezzi

Per informazioni sui prezzi per la copia dei set di dati, consulta Prezzi della replica dei dati.

BigQuery invia dati compressi per la copia tra regioni, pertanto i dati fatturati potrebbero essere inferiori alle dimensioni effettive del set di dati. Per saperne di più, consulta la pagina relativa ai prezzi di BigQuery.

Passaggi successivi