Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Creazione di set di dati

Questo documento descrive come creare set di dati in BigQuery.

Puoi creare i set di dati nei seguenti modi:

  • Tramite la console Google Cloud.
  • usando una query SQL.
  • Utilizzare il comando bq mk nello strumento a riga di comando bq.
  • Chiamare il metodo API datasets.insert.
  • Utilizzo delle librerie client.
  • Copia di un set di dati esistente.

Per visualizzare la procedura per copiare un set di dati, incluse le regioni, consulta la sezione Copia dei set di dati.

Per scoprire come eseguire query sulle tabelle in un set di dati pubblico, consulta Eseguire query su un set di dati pubblico con la console Google Cloud.

Limiti del set di dati

I set di dati BigQuery sono soggetti alle seguenti limitazioni:

  • Puoi impostare l'area geografica solo al momento della creazione. Dopo aver creato un set di dati, la località diventa immutabile e non può essere modificata utilizzando la console Google Cloud, utilizzando lo strumento a riga di comando bq o chiamando 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 di Identity and Access Management (IAM) che concedono agli utenti le autorizzazioni necessarie per eseguire ciascuna 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 Autorizzazioni e ruoli predefiniti.

Assegna set di dati

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

  • Fino a 1024 caratteri.
  • Lettere (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 nella console Google Cloud.

    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 per il set di dati.
    • In Località dei dati, scegli una località geografica per il set di dati. Una volta creato un set di dati, la località 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 eliminarli manualmente.
      • Numero di giorni dopo la creazione della tabella: questo valore determina quando una tabella appena creata nel set di dati viene eliminata. Questo valore viene applicato se non imposti una scadenza della tabella quando questa viene creata.

    • Fai clic su Crea set di dati.

SQL

Utilizza l'istruzione CREATE SCHEMA.

Per creare un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto all'ID set di dati nel seguente formato: PROJECT_ID.DATASET_ID.

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

    Vai a BigQuery

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

    CREATE SCHEMA PROJECT_ID.DATASET_ID
      OPTIONS (
        default_kms_key_name = 'KMS_KEY_NAME',
        default_partition_expiration_days = PARTITION_EXPIRATION,
        default_table_expiration_days = TABLE_EXPIRATION,
        description = 'DESCRIPTION',
        labels = [('LABEL_1','VALUE_1'),('LABEL_2','VALUE_2')],
        location = 'LOCATION',
        max_time_travel_hours = HOURS,
        storage_billing_model = STORAGE_BILLING_MODEL);
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • DATASET_ID: l'ID del set di dati che stai creando
    • KMS_KEY_NAME: il nome della chiave predefinita di Cloud Key Management Service utilizzata per proteggere le tabelle appena create in questo set di dati, a meno che non venga fornita una chiave diversa al momento della creazione. Non puoi creare una tabella criptata da Google in un set di dati con questo set di parametri.
    • PARTITION_EXPIRATION: durata predefinita (in giorni) delle partizioni nelle tabelle partizionate appena create. La scadenza della partizione predefinita non ha un valore minimo. La scadenza determina la data della partizione più il valore intero. Qualsiasi partizione creata in una tabella partizionata nel set di dati viene eliminata PARTITION_EXPIRATION giorno 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 della partizione predefinita a livello di set di dati.
    • TABLE_EXPIRATION: il lifetime value predefinito (in giorni) per le tabelle appena create. Il valore minimo è 0,042 giorni (un'ora). La scadenza corrisponde alla data corrente più il valore intero. Le tabelle create nel set di dati vengono eliminate TABLE_EXPIRATION giorni dopo la data/ora di creazione. Questo valore viene applicato se non imposti una scadenza per la tabella quando crei la tabella.
    • DESCRIPTION: una descrizione del set di dati
    • LABEL_1:VALUE_1: la coppia chiave-valore che vuoi impostare come prima etichetta in questo set di dati
    • LABEL_2:VALUE_2: la coppia chiave-valore che vuoi impostare come seconda etichetta
    • LOCATION: la località del set di dati. Dopo aver creato un set di dati, la località non può essere modificata.
    • HOURS: la durata in ore della finestra temporale del nuovo set di dati. La possibilità di configurare la finestra temporale per il viaggio è in anteprima. Il campo hours deve essere un multiplo di 24 tra 48 e 168. Se non specificato, il valore predefinito è 168.
    • STORAGE_BILLING_MODEL: imposta questa opzione su physical per utilizzare i byte fisici anziché i byte logici durante il calcolo degli addebiti per l'archiviazione di questo set di dati. Se il modello di fatturazione dello spazio di archiviazione viene impostato in modo da utilizzare byte fisici, non puoi modificarlo per utilizzare i byte logici. La possibilità di impostare il modello di fatturazione per l'archiviazione è in anteprima.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, vedi Esecuzione di query interattive.

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_ID.

bq --location=LOCATION mk \
    --dataset \
    --default_kms_key=KMS_KEY_NAME \
    --default_partition_expiration=PARTITION_EXPIRATION \
    --default_table_expiration=TABLE_EXPIRATION \
    --description="DESCRIPTION" \
    --label=LABEL_1:VALUE_1 \
    --label=LABEL_2:VALUE_2 \
    --max_time_travel_hours=HOURS \
    --storage_billing_model=BILLING_MODEL \
    PROJECT_ID:DATASET_ID

Sostituisci quanto segue:

  • LOCATION: la località del set di dati. Una volta creato un set di dati, la località non può essere modificata. Puoi impostare un valore predefinito per la località utilizzando il file .bigqueryrc.

  • 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 venga fornita una chiave diversa al momento della creazione. Non puoi creare una tabella criptata da 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 della partizione predefinita non ha un valore minimo. La scadenza corrisponde alla data della partizione più il valore intero. Qualsiasi partizione creata in una tabella partizionata nel set di dati viene eliminata PARTITION_EXPIRATION secondo dopo la data della partizione. Se fornisci il flag --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: durata predefinita (in secondi) delle tabelle appena create. Il valore minimo è 3600 secondi (un'ora). La data di scadenza viene calcolata fino all'ora corrente più il valore intero. Qualsiasi tabella creata nel set di dati viene eliminata TABLE_EXPIRATION secondo dopo la data/ora di creazione. Questo valore viene applicato se non imposti una scadenza per la tabella quando crei la tabella.

  • DESCRIPTION: una descrizione del set di dati

  • LABEL_1:VALUE_1: la coppia chiave-valore che vuoi impostare come prima etichetta in questo set di dati e LABEL_2:VALUE_2 è la coppia chiave-valore che vuoi impostare come seconda etichetta.

  • HOURS: la durata in ore della finestra di viaggio temporale per il nuovo set di dati. La possibilità di configurare la finestra temporale per il viaggio è in anteprima. Il campo HOURS deve essere un multiplo di 24 tra 48 e 168. Se non specificato, il valore predefinito è 168.

  • BILLING_MODEL: il modello di fatturazione dello spazio di archiviazione per il set di dati. La possibilità di impostare il modello di fatturazione dello spazio di archiviazione è in anteprima. Imposta questo valore del flag su LOGICAL per utilizzare i byte logici per la fatturazione dell'archiviazione oppure su PHYSICAL per utilizzare i byte fisici.

  • PROJECT_ID: l'ID del tuo progetto.

  • DATASET_ID è l'ID 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 crea per impostazione predefinita 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, consulta 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 per la configurazione di C# nella guida rapida di BigQuery all'utilizzo delle librerie client. Per saperne di più, 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 all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Go BigQuery.

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 per la configurazione di Java nella guida rapida di BigQuery all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java 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 all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Node.js 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 per la configurazione di PHP nella guida rapida di BigQuery all'utilizzo delle librerie client. Per saperne di più, 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 per la configurazione di Python nella guida rapida di BigQuery all'utilizzo delle librerie client. Per saperne di più, 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 all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Ruby BigQuery.

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