Creazione di set di dati

Questo documento descrive come creare set di dati in BigQuery.

Puoi creare set di dati nei seguenti modi:

  • Su Google Cloud Console.
  • Utilizzando una query SQL.
  • Usare il comando bq mk nello strumento a riga di comando bq.
  • Chiamata al metodo API datasets.insert.
  • Utilizzo delle librerie client.
  • Copia di un set di dati esistente.

Per visualizzare i passaggi per copiare un set di dati, inclusi quelli in più aree geografiche, consulta la sezione Copia dei set di dati.

Per informazioni su come eseguire query sulle tabelle in un set di dati pubblico, consulta Eseguire una query su un set di dati pubblico con Google Cloud Console.

Limitazioni del set di dati

I set di dati BigQuery sono soggetti alle seguenti limitazioni:

  • Puoi impostare la posizione geografica solo al momento della creazione. Dopo aver creato un set di dati, la località diventa immutabile e non può essere modificata utilizzando Google Cloud Console, lo strumento a riga di comando bq o i metodi API patch o update.
  • Tutte le tabelle a cui viene fatto riferimento in una query devono essere archiviate in set di dati nella stessa località.

  • Quando copi una tabella, i set di dati che contengono la tabella di origine e la tabella di destinazione devono risiedere nella stessa posizione.

  • I nomi dei set di dati devono essere univoci per ogni progetto.

Prima di iniziare

Concedi ruoli IAM (Identity and Access Management) che consentono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.

Autorizzazioni obbligatorie

Per creare un set di dati, devi disporre dell'autorizzazione IAM bigquery.datasets.create.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per creare un set di dati:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.user
  • roles/bigquery.admin

Per ulteriori informazioni sui ruoli IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Set di dati nome

Quando crei un set di dati in BigQuery, il nome del set di dati deve essere univoco per ogni progetto. Il nome del set di dati può contenere quanto segue:

  • Può includere un massimo di 1024 caratteri.
  • Lettere (maiuscole o minuscole), numeri e trattini bassi.

I nomi dei set di dati sono sensibili alle maiuscole: mydataset e MyDataset possono coesistere nello stesso progetto.

I nomi dei set di dati non possono contenere spazi o caratteri speciali come -, &, @ o %.

Creazione set di dati

Per creare un set di dati:

console

  1. Apri la pagina BigQuery in Google Cloud Console.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, seleziona il progetto in cui vuoi creare il set di dati.

  3. Espandi l'opzione Azioni e fai clic su Crea set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci un nome univoco del set di dati.
    • Per Località dei dati, scegli una località geografica per il set di dati. La creazione di un set di dati non può essere modificata.

    • In Scadenza tabella predefinita, scegli una delle seguenti opzioni:

      • Mai: (impostazione predefinita) le tabelle create nel set di dati non vengono mai eliminate automaticamente. Devi eliminarle manualmente.
      • Numero di giorni dopo la creazione di una tabella: questo valore determina quando una nuova tabella creata nel set di dati viene eliminata. Questo valore viene applicato se non imposti una scadenza per la tabella al momento della creazione.

    • Fai clic su Crea set di dati.

SQL

Per creare un set di dati, utilizza l'istruzione CREATE SCHEMA.

Per creare un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: project_id.dataset.

 CREATE SCHEMA project_id.dataset
 OPTIONS(
   default_kms_key_name="kms_key_name",
   default_partition_expiration_days=partition_expiration,
   default_table_expiration_days=table_expiration,
   description="description",
   labels=[("label1","value1"),("label2","value2")],
   max_time_travel_hours=hours
 )

Sostituisci quanto segue:

  • project_id è l'ID progetto.
  • dataset è il nome del set di dati che stai creando.
  • kms_key_name è il nome della chiave predefinita di Cloud Key Management Service utilizzata per proteggere le nuove tabelle create in questo set di dati, a meno che non sia fornita una chiave diversa al momento della creazione. Impossibile creare una tabella criptata con Google in un set di dati con questo set di parametri.
  • partition_expiration è la durata predefinita (in secondi) delle partizioni nelle tabelle partizionate appena create. La scadenza predefinita della partizione non ha un valore minimo. La data e l'ora di scadenza vengono sommate alla data della partizione più il valore intero. Qualsiasi partizione creata in una tabella partizionata nel set di dati viene eliminata partition_expiration secondi dopo la data della partizione. Se fornisci l'opzione time_partitioning_expiration quando crei o aggiorni una tabella partizionata, la scadenza della partizione a livello di tabella ha la precedenza sulla scadenza predefinita della partizione a livello di set di dati.
  • table_expiration è la durata predefinita (in secondi) delle nuove tabelle create. Il valore minimo è 3600 secondi (un'ora). L'ora di scadenza corrisponde all'ora corrente più il valore intero. Le tabelle create nel set di dati vengono eliminate table_expiration secondi dopo la creazione. Questo valore viene applicato se non imposti una scadenza per la tabella quando crei la tabella.
  • description è una descrizione del set di dati.
  • label1:value1 è la coppia chiave-valore che vuoi impostare come prima etichetta in questo set di dati, mentre label2:value2 è la coppia chiave-valore che vuoi impostare come seconda etichetta.
  • hours specifica la durata in ore della finestra di viaggio per il nuovo set di dati. La possibilità di configurare la finestra temporale di viaggio è in anteprima. hours deve essere un valore compreso tra 48 e 168. Se non è specificato, il valore predefinito è 168.

Per informazioni su come eseguire una query SQL in BigQuery, consulta Esecuzione di job di query interattivi e batch.

bq

Per creare un nuovo set di dati, utilizza il comando bq mk con il flag --location.

Per creare un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: project_id:dataset.

bq mk --dataset project_id:dataset

Sostituisci quanto segue:

  • project_id è l'ID progetto.
  • dataset è il nome del set di dati che stai creando.

Ad esempio, il seguente comando crea un set di dati denominato mydataset con località dei dati impostata su US, una scadenza predefinita della tabella di 3600 secondi (1 ora) e una descrizione di This is my dataset. Anziché usare il flag --dataset, il comando usa la scorciatoia -d. Se ometti -d e --dataset, il comando per impostazione predefinita crea un set di dati.

bq --location=US mk -d \
--default_table_expiration 3600 \
--description "This is my dataset." \
mydataset

Per confermare che il set di dati sia stato creato, inserisci il comando bq ls. Inoltre, puoi creare una tabella quando crei un nuovo set di dati utilizzando il seguente formato: bq mk -t dataset.table. Per ulteriori informazioni sulla creazione delle tabelle, vedi Creazione di una tabella.

API

Chiama il metodo datasets.insert con una risorsa set di dati definita.

C#

Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di BigQuery che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# BigQuery.


using Google.Apis.Bigquery.v2.Data;
using Google.Cloud.BigQuery.V2;

public class BigQueryCreateDataset
{
    public BigQueryDataset CreateDataset(
        string projectId = "your-project-id",
        string location = "US"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        var dataset = new Dataset
        {
            // Specify the geographic location where the dataset should reside.
            Location = location
        };
        // Create the dataset
        return client.CreateDataset(
            datasetId: "your_new_dataset_id", dataset);
    }
}

Go

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nella guida rapida di BigQuery che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// createDataset demonstrates creation of a new dataset using an explicit destination location.
func createDataset(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()

	meta := &bigquery.DatasetMetadata{
		Location: "US", // See https://cloud.google.com/bigquery/docs/locations
	}
	if err := client.Dataset(datasetID).Create(ctx, meta); err != nil {
		return err
	}
	return nil
}

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella Guida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import com.google.cloud.bigquery.DatasetInfo;

public class CreateDataset {

  public static void runCreateDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    createDataset(datasetName);
  }

  public static void createDataset(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();

      DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build();

      Dataset newDataset = bigquery.create(datasetInfo);
      String newDatasetName = newDataset.getDatasetId().getDataset();
      System.out.println(newDatasetName + " created successfully");
    } catch (BigQueryException e) {
      System.out.println("Dataset was not created. \n" + e.toString());
    }
  }
}

Node.js

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di BigQuery che utilizza le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di BigQuery.

// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function createDataset() {
  // Creates a new dataset named "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_new_dataset";

  // Specify the geographic location where the dataset should reside
  const options = {
    location: 'US',
  };

  // Create a new dataset
  const [dataset] = await bigquery.createDataset(datasetId, options);
  console.log(`Dataset ${dataset.id} created.`);
}
createDataset();

PHP

Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida di BigQuery che utilizza le librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP BigQuery.

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->createDataset($datasetId);
printf('Created dataset %s' . PHP_EOL, $datasetId);

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery che utilizza le librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python BigQuery.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to create.
# dataset_id = "{}.your_dataset".format(client.project)

# Construct a full Dataset object to send to the API.
dataset = bigquery.Dataset(dataset_id)

# TODO(developer): Specify the geographic location where the dataset should reside.
dataset.location = "US"

# Send the dataset to the API for creation, with an explicit timeout.
# Raises google.api_core.exceptions.Conflict if the Dataset already
# exists within the project.
dataset = client.create_dataset(dataset, timeout=30)  # Make an API request.
print("Created dataset {}.{}".format(client.project, dataset.dataset_id))

Ruby

Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nella guida rapida di BigQuery utilizzando le librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API BigQuery Ruby.

require "google/cloud/bigquery"

def create_dataset dataset_id = "my_dataset", location = "US"
  bigquery = Google::Cloud::Bigquery.new

  # Create the dataset in a specified geographic location
  bigquery.create_dataset dataset_id, location: location

  puts "Created dataset: #{dataset_id}"
end

Sicurezza dei set di dati

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

Passaggi successivi

Provalo

Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni di BigQuery in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova BigQuery gratuitamente