Gestione delle viste

Questo documento descrive come gestire le visualizzazioni in BigQuery. Puoi gestire le tue viste BigQuery nei seguenti modi:

Prima di iniziare

Concedi i ruoli IAM (Identity and Access Management) che concedono agli utenti le autorizzazioni necessarie per eseguire ogni attività nel documento. Le autorizzazioni necessarie per eseguire un'attività (se presenti) sono elencate nella sezione "Autorizzazioni richieste" dell'attività.

Aggiornare una vista

Dopo aver creato una vista, puoi aggiornare le seguenti proprietà:

Autorizzazioni obbligatorie

Per aggiornare una vista, devi disporre delle seguenti autorizzazioni IAM:

  • bigquery.tables.update
  • bigquery.tables.get

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per aggiornare una vista:

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

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi aggiornare le tabelle e le visualizzazioni nei set di dati che crei.

Se aggiorni la query SQL della vista, devi anche disporre delle autorizzazioni per eseguire query su qualsiasi tabella a cui fa riferimento la query SQL della vista.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Aggiornamento della query SQL di una vista

Puoi aggiornare la query SQL utilizzata per definire una vista in questo modo:

  • Utilizzo della console Google Cloud
  • Utilizzo del comando bq update dello strumento a riga di comando bq
  • Chiamare il metodo API tables.patch
  • Utilizzo delle librerie client

Puoi cambiare il dialetto SQL da SQL precedente a GoogleSQL nell'API o nello strumento a riga di comando bq. Non puoi aggiornare una vista SQL precedente a GoogleSQL nella console Google Cloud.

Per aggiornare la query SQL di una vista:

Console

  1. Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la visualizzazione.

  2. Fai clic sulla scheda Dettagli.

  3. Sopra la casella Query, fai clic sul pulsante Modifica query. Fai clic su Apri nella finestra di dialogo visualizzata.

    Modifica query

  4. Modifica la query SQL nella casella Editor query e poi fai clic su Salva visualizzazione.

    Salva vista

  5. Assicurati che tutti i campi siano corretti nella finestra di dialogo Salva visualizzazione, quindi fai clic su Salva.

bq

Esegui il comando bq update con il flag --view. Per utilizzare GoogleSQL o aggiornare il dialetto di query da SQL precedente a GoogleSQL, includi il flag --use_legacy_sql e impostalo su false.

Se la query fa riferimento a risorse di funzione definita dall'utente dall'utente archiviate in Cloud Storage o in file locali, utilizza il flag --view_udf_resource per specificare queste risorse. Il flag --view_udf_resource non è mostrato qui. Per ulteriori informazioni sull'utilizzo delle funzioni definite dall'utente, consulta Funzioni definite dall'utente di GoogleSQL.

Se stai aggiornando una vista in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: project_id:dataset.

bq update \
    --use_legacy_sql=false \
    --view_udf_resource=path_to_file \
    --view='query' \
    project_id:dataset.view

Sostituisci quanto segue:

  • path_to_file: l'URI o il percorso del file system locale di un file di codice da caricare e valutare immediatamente come risorsa di funzione definita dall'utente'utente utilizzata dalla vista. Ripeti il flag per specificare più file.
  • query: una query GoogleSQL valida
  • project_id: il tuo ID progetto
  • dataset: il nome del set di dati contenente la vista che stai aggiornando
  • view: il nome della visualizzazione che stai aggiornando

Esempi

Inserisci il comando seguente per aggiornare la query SQL per una vista denominata myview in mydataset. mydataset è nel tuo progetto predefinito. La query di esempio utilizzata per aggiornare i dati delle query di visualizzazione dal set di dati pubblico USA Name Data.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    mydataset.myview

Inserisci il comando seguente per aggiornare la query SQL per una vista denominata myview in mydataset. mydataset si trova in myotherproject, non nel tuo progetto predefinito. La query di esempio utilizzata per aggiornare i dati delle query di visualizzazione dal set di dati pubblico USA Name Data.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    myotherproject:mydataset.myview

API

Puoi aggiornare una vista chiamando il metodo tables.patch con una risorsa di tabella contenente una proprietà view aggiornata. Poiché il metodo tables.update sostituisce l'intera risorsa tabella, il metodo tables.patch è preferibile.

Go

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"

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

// updateView demonstrates updating the query metadata that defines a logical view.
func updateView(projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}

	newMeta := bigquery.TableMetadataToUpdate{
		// This example updates a view into the shakespeare dataset to exclude works named after kings.
		ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
	}

	if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.ViewDefinition;

// Sample to update query on a view
public class UpdateViewQuery {

  public static void runUpdateViewQuery() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String viewName = "MY_VIEW_NAME";
    String updateQuery =
        String.format("SELECT TimestampField, StringField FROM %s.%s", datasetName, tableName);
    updateViewQuery(datasetName, viewName, updateQuery);
  }

  public static void updateViewQuery(String datasetName, String viewName, String query) {
    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();

      // Retrieve existing view metadata
      TableInfo viewMetadata = bigquery.getTable(TableId.of(datasetName, viewName));

      // Update view query
      ViewDefinition viewDefinition = viewMetadata.getDefinition();
      viewDefinition.toBuilder().setQuery(query).build();

      // Set metadata
      bigquery.update(viewMetadata.toBuilder().setDefinition(viewDefinition).build());

      System.out.println("View query updated successfully");
    } catch (BigQueryException e) {
      System.out.println("View query was not updated. \n" + e.toString());
    }
  }
}

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

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

async function updateViewQuery() {
  // Updates a view named "my_existing_view" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_existing_dataset"
  // const tableId = "my_existing_table"
  const dataset = await bigquery.dataset(datasetId);

  // This example updates a view into the USA names dataset to include state.
  const newViewQuery = `SELECT name, state
  FROM \`bigquery-public-data.usa_names.usa_1910_current\`
  LIMIT 10`;

  // Retrieve existing view
  const [view] = await dataset.table(tableId).get();

  // Retrieve existing view metadata
  const [metadata] = await view.getMetadata();

  // Update view query
  metadata.view = newViewQuery;

  // Set metadata
  await view.setMetadata(metadata);

  console.log(`View ${tableId} updated.`);
}

Python

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
source_id = "my-project.my_dataset.my_table"
view = bigquery.Table(view_id)

# The source table in this example is created from a CSV file in Google
# Cloud Storage located at
# `gs://cloud-samples-data/bigquery/us-states/us-states.csv`. It contains
# 50 US states, while the view returns only those states with names
# starting with the letter 'M'.
view.view_query = f"SELECT name, post_abbr FROM `{source_id}` WHERE name LIKE 'M%'"

# Make an API request to update the query property of the view.
view = client.update_table(view, ["view_query"])
print(f"Updated {view.table_type}: {str(view.reference)}")

Aggiornamento della scadenza di una vista

Puoi impostare una scadenza predefinita per la tabella a livello di set di dati (che influisce sia sulle tabelle sia sulle viste) oppure puoi impostare la scadenza di una vista al momento della creazione. Se imposti la scadenza al momento della creazione della vista, la scadenza predefinita della tabella del set di dati viene ignorata. Se non imposti una scadenza predefinita per la tabella a livello del set di dati e non imposti una scadenza al momento della creazione della vista, quest'ultima non scade mai e devi eliminarla manualmente.

In qualsiasi momento dopo la creazione della vista, puoi aggiornare la data e l'ora di scadenza:

  • Utilizzo della console Google Cloud
  • Utilizzo di un'istruzione DDL (Data Definition Language) scritta con la sintassi di GoogleSQL
  • Utilizzo del comando bq update dello strumento a riga di comando bq
  • Chiamare il metodo API tables.patch
  • Utilizzo delle librerie client

Per aggiornare la data di scadenza di una vista:

Console

  1. Nel riquadro di navigazione, seleziona la visualizzazione.

  2. Nella pagina Visualizza dettagli, fai clic sulla scheda Dettagli.

  3. A destra di Visualizza informazioni, fai clic sull'icona di modifica (a forma di matita).

  4. Nella finestra di dialogo Visualizza informazioni, per Visualizza scadenza, fai clic su Specifica data.

  5. Nel selettore della data, inserisci la data e l'ora di scadenza, poi fai clic su Ok.

  6. Fai clic su Update (Aggiorna). La data di scadenza aggiornata viene visualizzata nella sezione Visualizza informazioni.

SQL

Utilizza l'istruzione DDL ALTER VIEW SET OPTIONS:

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

    Vai a BigQuery

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

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));
    

    Sostituisci quanto segue:

    • DATASET_ID: l'ID del set di dati contenente la vista
    • MY_VIEW: il nome della vista da aggiornare
    • NEW_TIMESTAMP: un valore TIMESTAMP

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Esegui il comando bq update con il flag --expiration. Se aggiorni una vista in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: project_id:dataset.

bq update \
    --expiration integer \
    project_id:dataset.view

Sostituisci quanto segue:

  • integer: la durata predefinita (in secondi) della tabella. Il valore minimo è 3600 secondi (un'ora). La data e l'ora di scadenza corrispondono all'ora attuale più il valore intero.
  • project_id: il tuo ID progetto
  • dataset: il nome del set di dati contenente la vista che stai aggiornando
  • view: il nome della visualizzazione che stai aggiornando

Esempi

Inserisci il comando seguente per aggiornare la scadenza di myview in mydataset impostandola su 5 giorni (432.000 secondi). mydataset è nel tuo progetto predefinito.

bq update \
    --expiration 432000 \
    mydataset.myview

Inserisci il comando seguente per aggiornare la scadenza di myview in mydataset impostandola su 5 giorni (432.000 secondi). mydataset si trova in myotherproject, non è il tuo progetto predefinito.

bq update \
    --expiration 432000 \
    myotherproject:mydataset.myview

API

Chiama il metodo tables.patch e utilizza la proprietà expirationTime nella risorsa di tabella. Poiché il metodo tables.update sostituisce l'intera risorsa della tabella, è preferibile il metodo tables.patch. Quando utilizzi l'API REST, la scadenza della vista è espressa in millisecondi.

Go

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"
	"time"

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

// updateTableExpiration demonstrates setting the table expiration of a table to a specific point in time
// in the future, at which time it will be deleted.
func updateTableExpiration(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

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

async function updateTableExpiration() {
  // Updates a table's expiration.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset', // Existing dataset
  // const tableId = 'my_table', // Existing table
  // const expirationTime = Date.now() + 1000 * 60 * 60 * 24 * 5 // 5 days from current time in ms

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table expiration to 5 days from current time
  metadata.expirationTime = expirationTime.toString();
  const [apiResponse] = await table.setMetadata(metadata);

  const newExpirationTime = apiResponse.expirationTime;
  console.log(`${tableId} expiration: ${newExpirationTime}`);
}

Python

L'aggiornamento della scadenza di una vista è la stessa procedura utilizzata per l'aggiornamento della scadenza di una tabella.

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you want to update.
table_id = "your-project.your_dataset.your_table_name"

# TODO(dev): Set table to expire for desired days days from now.
expiration = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
    days=5
)
table = client.get_table(table_id)  # Make an API request.
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

print(f"Updated {table_id}, expires {table.expires}.")

Aggiornamento della descrizione di una vista

Puoi aggiornare la descrizione di una vista:

  • Utilizzo della console Google Cloud
  • Utilizzo di un'istruzione DDL (Data Definition Language) scritta con la sintassi di GoogleSQL
  • Utilizzo del comando bq update dello strumento a riga di comando bq
  • Chiamare il metodo API tables.patch
  • Utilizzo delle librerie client

Per aggiornare la descrizione di una vista:

Console

Non puoi aggiungere una descrizione quando crei una vista utilizzando la console Google Cloud. Dopo aver creato la visualizzazione, puoi aggiungere una descrizione nella pagina Dettagli.

  1. Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la visualizzazione.

  2. Fai clic sulla scheda Dettagli.

  3. Fai clic sull'icona a forma di matita accanto a Descrizione.

    Modifica descrizione visualizzazione

  4. Inserisci una descrizione nella finestra di dialogo. Fai clic su Aggiorna per salvare la nuova descrizione.

SQL

Utilizza l'istruzione DDL ALTER VIEW SET OPTIONS:

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

    Vai a BigQuery

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

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      description = 'NEW_DESCRIPTION');
    

    Sostituisci quanto segue:

    • DATASET_ID: l'ID del set di dati contenente la vista
    • MY_VIEW: il nome della vista da aggiornare
    • NEW_DESCRIPTION: la nuova descrizione della visualizzazione

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Esegui il comando bq update con il flag --description. Se aggiorni una vista in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

bq update \
    --description "description" \
    project_id:dataset.view

Sostituisci quanto segue:

  • description: il testo che descrive il punto di vista tra virgolette
  • project_id: il tuo ID progetto.
  • dataset: il nome del set di dati contenente la vista che stai aggiornando
  • view: il nome della visualizzazione che stai aggiornando

Esempi

Inserisci il seguente comando per modificare la descrizione di myview in mydatasetin "Descrizione di myview". mydataset è nel tuo progetto predefinito.

bq update \
    --description "Description of myview" \
    mydataset.myview

Inserisci il seguente comando per modificare la descrizione di myview in mydataset in "Descrizione di myview". mydataset si trova in myotherproject, non è il tuo progetto predefinito.

bq update \
    --description "Description of myview" \
    myotherproject:mydataset.myview

API

Chiama il metodo tables.patch e utilizza la proprietà description per aggiornare la descrizione della vista nella risorsa di tabella. Poiché il metodo tables.update sostituisce l'intera risorsa della tabella, è preferibile il metodo tables.patch.

Go

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"

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

// updateTableDescription demonstrates how to fetch a table's metadata and updates the Description metadata.
func updateTableDescription(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		Description: "Updated description.",
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

L'aggiornamento della descrizione di una vista è la stessa procedura utilizzata per l'aggiornamento della descrizione di una tabella.

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

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

async function updateTableDescription() {
  // Updates a table's description.

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table description
  const description = 'New table description.';
  metadata.description = description;
  const [apiResponse] = await table.setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${tableId} description: ${newDescription}`);
}

Python

L'aggiornamento della descrizione di una vista è la stessa procedura utilizzata per l'aggiornamento della descrizione di una tabella.

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

# from google.cloud import bigquery
# client = bigquery.Client()
# project = client.project
# dataset_ref = bigquery.DatasetReference(project, dataset_id)
# table_ref = dataset_ref.table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Copia visualizzazioni

Al momento, puoi copiare una sola visualizzazione utilizzando la console Google Cloud.

Non puoi copiare una vista utilizzando lo strumento a riga di comando bq, l'API REST o le librerie client. Devi invece recreate la vista nel set di dati di destinazione. Per aiutarti a ricreare la vista, puoi utilizzare lo strumento a riga di comando bq per copiare la query SQL della vista.

Autorizzazioni obbligatorie

Per copiare una vista nella console Google Cloud, devi disporre delle autorizzazioni IAM sui set di dati di origine e di destinazione.

  • Sul set di dati di origine è necessario quanto segue:

    • bigquery.tables.get
    • bigquery.tables.getData (necessario per accedere alle tabelle a cui fa riferimento la query SQL della vista)
  • Nel set di dati di destinazione è necessario quanto segue:

    • bigquery.tables.create (consente di creare una copia della vista nel set di dati di destinazione)

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per copiare una vista:

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

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi copiare le visualizzazioni nei set di dati che crei. Devi anche accedere al set di dati di destinazione, a meno che tu non lo abbia creato.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Copiare una vista

Per copiare una vista:

Console

  1. Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la visualizzazione.

  2. Nel riquadro dei dettagli, fai clic su Copia vista.

  3. Nella finestra di dialogo Copia vista:

    • Nella sezione Origine, verifica che i campi Nome progetto, Nome set di dati e Nome tabella siano corretti.
    • Nella sezione Destinazione:

      • In Nome progetto, scegli il progetto in cui stai copiando la vista.
      • In Nome set di dati, scegli il set di dati che conterrà la vista copiata.
      • In Nome tabella, inserisci il nome della vista. Puoi rinominare la vista inserendo un nuovo nome nella casella. Se inserisci un nuovo nome, deve seguire le regole di nome delle viste.

      Finestra di dialogo Copia visualizzazione

    • Fai clic su Copia.

bq

Lo strumento a riga di comando bq non supporta la copia di una vista. Devi invece ricreare la visualizzazione nel set di dati di destinazione. Per ricreare la vista, puoi copiare la query SQL utilizzata per definire la vista.

Per copiare la query SQL che definisce una vista, invia il comando bq show. Il flag --format può essere usato per controllare l'output. Se ricevi informazioni su una vista in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: project_id:dataset. Per scrivere le proprietà di visualizzazione in un file, aggiungi > path_to_file al comando.

bq show \
--format=prettyjson \
project_id:dataset.view > path_to_file

Dove:

  • project_id è l'ID progetto.
  • dataset è il nome del set di dati.
  • view è il nome della vista.
  • path_to_file è il percorso del file di output sulla macchina locale.

Esempi:

Inserisci il seguente comando per visualizzare le informazioni su myview in mydataset. mydataset è nel tuo progetto predefinito.

bq show --format=prettyjson mydataset.myview

Inserisci il seguente comando per visualizzare le informazioni su myview in mydataset. mydataset si trova in myotherproject, non è il tuo progetto predefinito. Le proprietà della vista sono scritte in un file locale: /tmp/myview.json.

bq show \
--format=prettyjson \
myotherproject:mydataset.myview > /tmp/myview.json

API

L'API REST non supporta la copia di una vista. Devi invece ricreare la visualizzazione nel set di dati di destinazione. Per informazioni sulla creazione di una vista utilizzando l'API REST, consulta la sezione Creazione di una vista.

Rinominare una vista

Al momento, puoi rinominare una vista solo quando utilizzi la console Google Cloud per copiarla. Per istruzioni su come rinominare una vista quando la copi, consulta Copia di una vista.

Non puoi modificare il nome di una vista esistente utilizzando lo strumento a riga di comando bq, l'API o le librerie client. Devi invece ricreare la vista con il nuovo nome.

Elimina visualizzazioni

Puoi eliminare una visualizzazione per:

  • Utilizzo della console Google Cloud
  • Utilizzo del comando bq rm dello strumento a riga di comando bq
  • Chiamare il metodo dell'API tables.delete

Al momento, con qualsiasi metodo disponibile, puoi eliminare una sola visualizzazione alla volta.

Per eliminare automaticamente le viste dopo un determinato periodo di tempo, imposta la data di scadenza predefinita a livello di set di dati oppure imposta la scadenza quando crei la vista.

Quando elimini una vista autorizzata, potrebbero essere necessarie fino a 24 ore per rimuoverla dall'elenco delle viste autorizzate del set di dati di origine.

L'eliminazione di una vista comporta anche l'eliminazione di eventuali autorizzazioni associate. Quando ricrei una vista eliminata, devi anche riconfigurare manualmente le autorizzazioni di accesso associate in precedenza.

Autorizzazioni obbligatorie

Per eliminare una vista, devi disporre delle seguenti autorizzazioni IAM:

  • bigquery.tables.delete

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per eliminare una vista:

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

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi eliminare le visualizzazioni nei set di dati che crei.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Eliminare una visualizzazione

Per eliminare una visualizzazione:

Console

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

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la visualizzazione.

  3. Nel riquadro dei dettagli, fai clic su Elimina vista.

  4. Digita "delete" nella finestra di dialogo e fai clic su Elimina per confermare.

SQL

Utilizza l'istruzione DDL DROP VIEW:

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

    Vai a BigQuery

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

    DROP VIEW mydataset.myview;
    

    Sostituisci quanto segue:

    • DATASET_ID: l'ID del set di dati contenente la vista
    • MY_VIEW: il nome della vista da aggiornare
    • NEW_DESCRIPTION: la nuova descrizione della visualizzazione

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

Utilizza il comando bq rm con il flag --table (o la scorciatoia -t) per eliminare una vista. Quando utilizzi lo strumento a riga di comando bq per rimuovere una vista, devi confermare l'azione. Puoi utilizzare il flag --force (o la scorciatoia -f) per saltare la conferma.

Se la visualizzazione si trova in 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 rm \
-f \
-t \
project_id:dataset.view

Dove:

  • project_id è l'ID progetto.
  • dataset è il nome del set di dati che contiene la tabella.
  • view è il nome della vista che stai eliminando.

Esempi:

Puoi utilizzare lo strumento a riga di comando bq per eseguire i comandi bq.

Nella console Google Cloud, attiva Cloud Shell.

Attivare Cloud Shell

Inserisci il seguente comando per eliminare myview da mydataset. mydataset è nel tuo progetto predefinito.

bq rm -t mydataset.myview

Inserisci il seguente comando per eliminare myview da mydataset. mydataset si trova in myotherproject, non nel progetto predefinito.

bq rm -t myotherproject:mydataset.myview

Inserisci il seguente comando per eliminare myview da mydataset. mydataset è nel tuo progetto predefinito. Il comando utilizza la scorciatoia -f per ignorare la conferma.

bq rm -f -t mydataset.myview

API

Chiama il metodo API tables.delete e specifica la vista da eliminare utilizzando il parametro tableId.

C#

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.


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

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

Go

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"

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

// deleteTable demonstrates deletion of a BigQuery table.
func deleteTable(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	table := client.Dataset(datasetID).Table(tableID)
	if err := table.Delete(ctx); err != nil {
		return err
	}
	return nil
}

Java

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

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

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

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

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.


from google.cloud import bigquery

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

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True.
client.delete_table(table_id, not_found_ok=True)  # Make an API request.
print("Deleted table '{}'.".format(table_id))

Ruby

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

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Visualizza sicurezza

Per controllare l'accesso alle viste in BigQuery, consulta Visualizzazioni autorizzate.

Passaggi successivi