Crea visualizzazioni

Questo documento descrive come creare viste in BigQuery.

Puoi creare una vista in BigQuery nei seguenti modi:

  • Utilizzo della console Google Cloud.
  • Viene utilizzato il comando bq mk dello strumento a riga di comando bq.
  • Chiamata a tables.insert API.
  • Utilizzare le librerie client.
  • Inviare una CREATE VIEW l'istruzione DDL (Data Definition Language).

Visualizza limitazioni

Le viste BigQuery sono soggette alle seguenti limitazioni:

  • Le visualizzazioni sono di sola lettura. Ad esempio, non puoi eseguire query che inseriscono, aggiornano o eliminare dati.
  • Il set di dati che contiene la tua vista e il set di dati che contiene le tabelle a cui fa riferimento la vista deve essere nello stesso location.
  • Un riferimento all'interno di una vista deve essere qualificato con un set di dati. Il valore predefinito del set di dati non influisce sul corpo di una vista.
  • Non puoi utilizzare il metodo dell'API JSON TableDataList per recuperare i dati da un vista. Per ulteriori informazioni, vedi Tabledata: elenco.
  • Non puoi combinare query GoogleSQL e SQL precedente quando utilizzi le viste. Una query GoogleSQL non può fare riferimento a una vista definita utilizzando la sintassi SQL precedente.
  • Non puoi fare riferimento parametri di query nelle viste.
  • Gli schemi delle tabelle sottostanti vengono archiviati insieme alla vista viene creato. Se le colonne vengono aggiunte, eliminate o modificate dopo la visualizzazione significa che lo schema segnalato non è preciso finché la vista non viene aggiornata. Anche se lo schema segnalato potrebbe non essere preciso, tutte le query inviate produrre risultati accurati.
  • Non puoi aggiornare automaticamente una vista SQL precedente a GoogleSQL a riga di comando. Per modificare la query utilizzata per definire una vista, puoi utilizzare il comando seguenti:
  • Non puoi includere una funzione definita dall'utente temporanea o una tabella temporanea nella query SQL che definisce una vista.
  • Non puoi fare riferimento a una visualizzazione in una tabella con caratteri jolly. query.

Per informazioni su quote e limiti che si applicano alle viste, consulta Limiti di visualizzazione.

Prima di iniziare

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

Autorizzazioni obbligatorie

Le viste vengono trattate come risorse di tabella in BigQuery, quindi la creazione di un richiede le stesse autorizzazioni della creazione di una tabella. Devi inoltre avere autorizzazioni per eseguire query sulle tabelle a cui fa riferimento la query SQL della vista.

Per creare una vista, devi disporre di IAM bigquery.tables.create autorizzazione. Il ruolo IAM predefinito roles/bigquery.dataEditor include le autorizzazioni necessarie per creare una vista.

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi e creare viste nei set di dati da te creati. Per creare una vista per i dati che non sono proprietari, devi disporre dell'autorizzazione bigquery.tables.getData per la tabella.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Ruoli e ruoli predefiniti autorizzazioni.

Visualizza denominazione

Quando crei una vista in BigQuery, il nome della vista deve essere univoci per ogni set di dati. Il nome della vista può:

  • Contenere caratteri con un massimo di 1024 byte UTF-8 in totale.
  • Contenere caratteri Unicode nella categoria L (lettera), M (segno), N (numero), Pc (connettore, trattino basso incluso), Pd (trattino), Z (spazio). Per ulteriori informazioni le informazioni, vedi Categoria generale.

Di seguito sono riportati tutti esempi di nomi di viste validi: view 01, ग्राहक, 00_お客様 e étudiant-01.

Precisazioni:

  • Per impostazione predefinita, i nomi delle tabelle sono sensibili alle maiuscole. mytable e MyTable possono coesistono nello stesso set di dati, a meno che non facciano parte di un set di dati con sensibilità alle maiuscole disattivata.
  • Alcuni nomi e prefissi dei nomi delle visualizzazioni sono riservati. Se ricevi un messaggio di errore che indica che il nome o il prefisso della visualizzazione è riservato, seleziona un altro nome e riprova.
  • Se includi più operatori di punto (.) in una sequenza, lo stato duplicato vengono implicitamente eliminati.

    Ad esempio: project_name....dataset_name..table_name

    Diventa questo: project_name.dataset_name.table_name

Crea una vista

Puoi creare una vista componendo una query SQL utilizzata per definire i dati accessibile alla vista. La query SQL deve essere composta da un'istruzione SELECT. Altri tipi di istruzioni (ad esempio istruzioni DML) e query con più dichiarazioni non sono consentite. nelle query di visualizzazione.

Per creare una vista:

Console

  1. Dopo aver eseguito una query, fai clic sul pulsante Salva visualizzazione sopra la query finestra dei risultati per salvare la query come visualizzazione.

    Salva visualizzazione.

  2. Nella finestra di dialogo Salva visualizzazione:

    • In Nome progetto, seleziona un progetto in cui archiviare la vista.
    • In Nome set di dati, scegli un set di dati in cui archiviare la vista. Il set di dati che contiene la tua vista e quello che contiene le tabelle a cui fa riferimento la vista devono trovarsi nella stessa località.
    • In Nome tabella, inserisci il nome della vista.
    • Fai clic su Salva.

SQL

Utilizza la CREATE VIEW. Le seguenti esempio crea una vista denominata usa_male_names dai nomi USA set di dati pubblico:

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

    Vai a BigQuery

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

    CREATE VIEW mydataset.usa_male_names(name, number) AS (
      SELECT
        name,
        number
      FROM
        bigquery-public-data.usa_names.usa_1910_current
      WHERE
        gender = 'M'
      ORDER BY
        number DESC
    );
    

  3. Fai clic su Esegui.

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

bq

Usa il comando bq mk con il flag --view. Per le query GoogleSQL, aggiungi il flag --use_legacy_sql e impostalo su false. Alcuni facoltativi i parametri includono --add_tags, --expiration, --description e --label. Per un elenco completo dei parametri, vedi Comando bq mk riferimento.

Se la query fa riferimento a risorse di funzione definita dall'utente esterne archiviati in Cloud Storage o in file locali, utilizza --view_udf_resource per specificare queste risorse. La La segnalazione di --view_udf_resource non è mostrata qui. Per ulteriori informazioni delle funzioni definite dall'utente, consulta UDF.

Se stai creando una vista in un progetto diverso da quello predefinito, specifica l'ID progetto utilizzando il flag --project_id.

bq mk \
--use_legacy_sql=false \
--view_udf_resource=PATH_TO_FILE \
--expiration=INTEGER \
--description="DESCRIPTION" \
--label=KEY_1:VALUE_1 \
--add_tags=KEY_2:VALUE_2[,...] \
--view='QUERY' \
--project_id=PROJECT_ID \
DATASET.VIEW

Sostituisci quanto segue:

  • PATH_TO_FILE è l'URI o il percorso del file system locale a un file di codice da caricare e valutare immediatamente come risorsa UDF usata dalla vista. Ripeti il flag per specificare più file.
  • INTEGER imposta la durata (in secondi) di la vista. Se INTEGER è 0, la visualizzazione non scadono. Se non includi il flag --expiration, BigQuery crea la vista con la durata predefinita della tabella del set di dati.
  • DESCRIPTION è una descrizione della visualizzazione tra virgolette.
  • KEY_1:VALUE_1 è la coppia chiave-valore che rappresenta un label. Ripeti il flag --label per specificare più etichette.
  • KEY_2:VALUE_2 è la coppia chiave-valore che rappresenta un tag. Aggiungi più tag sotto lo stesso flag con virgole tra le coppie chiave:valore.
  • QUERY è una query valida.
  • PROJECT_ID è il tuo ID progetto (se non disponi di è configurato un progetto predefinito).
  • DATASET è un set di dati nel tuo progetto.
  • VIEW è il nome della vista che vuoi creare.

Esempi:

Inserisci questo comando per creare una vista denominata myview in mydataset nel progetto predefinito. La scadenza è impostata su 3600 secondi (1 ora), la descrizione è impostata su This is my view e l'etichetta è impostata su organization:development. La query utilizzata per creare la vista esegue query sui dati del set di dati pubblico Name Data USA.

bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
mydataset.myview

Inserisci questo comando per creare una vista denominata myview in mydataset a myotherproject. La descrizione è impostata su This is my view, l'etichetta è impostata su organization:development, e la scadenza della vista è impostata sulla tabella predefinita del set di dati la scadenza del periodo di conservazione. La query utilizzata per creare la vista esegue query sui dati del set di dati pubblico Name Data USA.

bq mk \
--use_legacy_sql=false \
--description "This is my view" \
--label organization:development \
--project_id myotherproject \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
mydataset.myview

Dopo aver creato una vista, puoi aggiornarne scadenza, descrizione ed etichette. Per ulteriori informazioni, vedi Aggiornamento delle visualizzazioni.

Terraform

Utilizza la google_bigquery_table risorsa.

Per eseguire l'autenticazione in BigQuery, configura il valore predefinito dell'applicazione Credenziali. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

L'esempio seguente crea una vista denominata myview:

resource "google_bigquery_dataset" "default" {
  dataset_id                      = "mydataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}

resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "myview"
  deletion_protection = false # set to "true" in production

  view {
    query          = "SELECT global_id, faa_identifier, name, latitude, longitude FROM `bigquery-public-data.faa.us_airports`"
    use_legacy_sql = false
  }

}

Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.

Prepara la directory

Ogni file di configurazione Terraform deve avere una directory (inoltre chiamato modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo all'interno di quella directory. Il nome del file deve contenere .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel nuovo oggetto main.tf.

    Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi -upgrade :

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o che l'aggiornamento soddisfi le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo questo comando e inserendo yes alla richiesta:
    terraform apply

    Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.

API

Chiama il metodo tables.insert con una risorsa di tabella contiene una proprietà view.

Vai

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

import (
	"context"
	"fmt"

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

// createView demonstrates creation of a BigQuery logical view.
func createView(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydatasetid"
	// tableID := "mytableid"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	meta := &bigquery.TableMetadata{
		// This example shows how to create a view of the shakespeare sample dataset, which
		// provides word frequency information.  This view restricts the results to only contain
		// results for works that contain the "king" in the title, e.g. King Lear, King Henry V, etc.
		ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus LIKE '%king%'",
	}
	if err := client.Dataset(datasetID).Table(tableID).Create(ctx, meta); err != nil {
		return err
	}
	return nil
}

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 create a view
public class CreateView {

  public static void main(String[] args) {
    // 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 query =
        String.format(
            "SELECT TimestampField, StringField, BooleanField FROM %s.%s", datasetName, tableName);
    createView(datasetName, viewName, query);
  }

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

      TableId tableId = TableId.of(datasetName, viewName);

      ViewDefinition viewDefinition =
          ViewDefinition.newBuilder(query).setUseLegacySql(false).build();

      bigquery.create(TableInfo.of(tableId, viewDefinition));
      System.out.println("View created successfully");
    } catch (BigQueryException e) {
      System.out.println("View was not created. \n" + e.toString());
    }
  }
}

Node.js

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 createView() {
  // Creates a new view named "my_shared_view" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const myDatasetId = "my_table"
  // const myTableId = "my_table"
  // const projectId = "bigquery-public-data";
  // const sourceDatasetId = "usa_names"
  // const sourceTableId = "usa_1910_current";
  const myDataset = await bigquery.dataset(myDatasetId);

  // For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
  const options = {
    view: `SELECT name 
    FROM \`${projectId}.${sourceDatasetId}.${sourceTableId}\`
    LIMIT 10`,
  };

  // Create a new view in the dataset
  const [view] = await myDataset.createTable(myTableId, options);

  console.log(`View ${view.id} created.`);
}

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 'W'.
view.view_query = f"SELECT name, post_abbr FROM `{source_id}` WHERE name LIKE 'W%'"

# Make an API request to create the view.
view = client.create_table(view)
print(f"Created {view.table_type}: {str(view.reference)}")

Dopo aver creato la vista, esegui una query come esegui una query su una tabella.

Visualizza sicurezza

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

Passaggi successivi