Creare viste logiche
Questo documento descrive come creare viste logiche in BigQuery.
Puoi creare una vista logica nei seguenti modi:
- Utilizzando la Google Cloud console.
- Utilizzando il comando
bq mkdello strumento a riga di comando bq. - Chiamando il
tables.insertmetodo API. - Utilizzando le librerie client.
- Inviando un'istruzione DDL (Data Definition Language)
CREATE VIEW.
Limitazioni delle viste
Le viste BigQuery sono soggette alle seguenti limitazioni:
- Le viste sono di sola lettura. Ad esempio, non puoi eseguire query che inseriscono, aggiornano o eliminano dati.
- Se la vista fa riferimento a tabelle di località remote, devi abilitare le query globali prima di creare la vista.
- Un riferimento all'interno di una vista deve essere qualificato con un set di dati. Il set di dati predefinito non influisce sul corpo di una vista.
- Non puoi utilizzare il metodo API JSON
TableDataListper recuperare i dati da una vista. Per saperne di più, consulta Tabledata: list. - Quando utilizzi le viste, non puoi combinare query GoogleSQL e SQL precedente. Una query GoogleSQL non può fare riferimento a una vista definita utilizzando la sintassi SQL precedente.
- Non puoi fare riferimento ai parametri di query nelle viste.
- Gli schemi delle tabelle sottostanti vengono archiviati con la vista quando viene creata. Se le colonne vengono aggiunte, eliminate o modificate dopo la creazione della vista, quest'ultima non viene aggiornata automaticamente e lo schema segnalato rimarrà impreciso finché la definizione SQL della vista non viene modificata o la vista non viene ricreata. Anche se lo schema segnalato potrebbe essere impreciso, tutte le query inviate producono risultati accurati.
- Non puoi aggiornare automaticamente una vista SQL precedente alla sintassi GoogleSQL. Per modificare la query utilizzata per definire una vista, puoi utilizzare:
- L'op0}opzione Modifica query nella Google Cloud console
- Il comando
bq update --viewnello strumento a riga di comando bq - Le librerie client di BigQuery
- I metodi API update o patch.
- 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 vista in una query di tabella con caratteri jolly.
- Le viste logiche non possono ereditare o definire esplicitamente
tipi di dati con parametri,
come
STRING(n), poiché i tipi di dati con parametri sono supportati solo per le colonne della tabella di base e le variabili di script.
Per informazioni su quote e limiti applicabili alle viste, consulta Limiti delle viste.
Prima di iniziare
Concedi i ruoli IAM (Identity and Access Management) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività descritta in questo documento.
Autorizzazioni obbligatorie
Le viste vengono trattate come risorse tabella in BigQuery, pertanto la creazione di una vista richiede le stesse autorizzazioni della creazione di una tabella. Devi inoltre disporre delle autorizzazioni per eseguire query su tutte le tabelle a cui fa riferimento la query SQL della vista.
- Per creare un set di dati, devi disporre dell'autorizzazione IAM
bigquery.datasets.createsul progetto. - Per creare una vista, devi disporre dell'autorizzazione IAM
bigquery.tables.createsul set di dati. Il ruolo IAM predefinitoroles/bigquery.dataEditorinclude le autorizzazioni necessarie per creare una vista. - Per creare una vista che esegue query su una tabella a cui non hai accesso, devi disporre dell'autorizzazione
bigquery.tables.getDatasulla tabella su cui viene eseguita la query dalla vista.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Denominazione delle viste
Quando crei una vista in BigQuery, il nome della vista deve essere univoco per ogni set di dati. Il nome della vista può:
- Contenere caratteri con un totale massimo di 1024 byte UTF-8.
- Contenere caratteri Unicode nelle categorie L (lettera), M (segno), N (numero), Pc (connettore, incluso il trattino basso), Pd (trattino), Zs (spazio). Per saperne di più, consulta Categoria generale.
Di seguito sono riportati alcuni esempi di nomi di viste validi: view 01, ग्राहक, 00_お客様, étudiant-01.
Precisazioni:
- I nomi delle tabelle sono sensibili alle maiuscole per impostazione predefinita.
mytableeMyTablepossono coesistere nello stesso set di dati, a meno che non facciano parte di un set di dati con la distinzione tra maiuscole e minuscole disattivata. - Alcuni nomi di viste e prefissi di nomi di viste sono riservati. Se ricevi un messaggio di errore che indica che il nome o il prefisso della vista è riservato, seleziona un nome diverso e riprova.
Se includi più operatori punto (
.) in una sequenza, gli operatori duplicati vengono rimossi implicitamente.Ad esempio,
project_name....dataset_name..table_nameDiventa
project_name.dataset_name.table_name
Creare una vista
Puoi creare una vista componendo una query SQL utilizzata per definire i dati accessibili alla vista. La query SQL deve essere costituita da un'istruzione SELECT.
Altri tipi di istruzioni (ad esempio le istruzioni DML) e
query con più istruzioni non sono consentite
nelle query delle viste, ad eccezione della @@session_id
variabile di sistema.
Per creare una vista:
Console
Nella Google Cloud console, vai alla pagina BigQuery.
Fai clic su Query SQL.
Nell'editor di query, inserisci una query SQL valida.
In alternativa, puoi aprire una query salvata.
Fai clic su
Salva > Salva vista.
Nella finestra di dialogo Salva vista:
- Nel menu Progetto, seleziona un progetto in cui archiviare la vista.
- Nel menu Set di dati, seleziona un set di dati o creane uno nuovo in cui archiviare la vista. Il set di dati di destinazione per una vista salvata deve trovarsi in nella stessa regione dell'origine.
- Nel campo Tabella, inserisci il nome della vista.
- Fai clic su Salva.
SQL
Utilizza l'
CREATE VIEW statement.
L'esempio seguente crea una vista denominata usa_male_names dal set di dati pubblico USA Names:
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di 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 );
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
bq
Utilizza il bq mk comando
con il --view flag. Per le query GoogleSQL, aggiungi il flag --use_legacy_sql e impostalo su false. Alcuni parametri facoltativi includono --add_tags, --expiration, --description e --label. Per un elenco completo dei parametri, consulta il
bq mk comando
riferimento.
Se la query fa riferimento a risorse di funzione definita dall'utente (UDF) esterne archiviate in Cloud Storage o in file locali, utilizza il flag --view_udf_resource per specificare queste risorse. Il flag --view_udf_resource non è illustrato qui. Per saperne di più sull'utilizzo delle UDF, 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è il percorso URI o del file system locale di un file di codice da caricare e valutare immediatamente come risorsa UDF utilizzata dalla vista. Ripeti il flag per specificare più file.INTEGERimposta la durata (in secondi) della vista. SeINTEGERè0, la vista non scade. Se non includi il flag--expiration, BigQuery crea la vista con la durata predefinita della tabella del set di dati.DESCRIPTIONè una descrizione della vista tra virgolette.KEY_1:VALUE_1è la coppia chiave-valore che rappresenta un' etichetta. Ripeti il flag--labelper specificare più etichette.KEY_2:VALUE_2è la coppia chiave-valore che rappresenta un tag. Aggiungi più tag con lo stesso flag con le coppie chiave-valore separate da virgole.QUERYè una query valida.PROJECT_IDè l'ID progetto (se non hai configurato un progetto predefinito).DATASETè un set di dati nel tuo progetto.VIEWè il nome della vista che vuoi creare.
Esempi:
Inserisci il seguente comando per creare una vista denominata myview in mydataset nel tuo progetto predefinito. Il tempo di scadenza è impostato 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 USA Name Data.
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 il seguente comando per creare una vista denominata myview in mydataset in myotherproject. La descrizione è impostata su This is my view, l'etichetta è impostata su organization:development e la scadenza della vista è impostata sulla scadenza predefinita della tabella del set di dati.
La query utilizzata per creare la vista
esegue query sui dati del set di dati pubblico USA Name Data.
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 la vista, puoi aggiornarne la scadenza, la descrizione e le etichette. Per saperne di più, consulta Aggiornare le viste.
Terraform
Utilizza la
google_bigquery_table
risorsa.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
L'esempio seguente crea una vista denominata myview:
Per applicare la configurazione Terraform in un Google Cloud progetto, completa i passaggi nelle sezioni seguenti.
Preparare Cloud Shell
- Avvia Cloud Shell.
-
Imposta il Google Cloud progetto predefinito in cui 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 nel file di configurazione Terraform
Preparare la directory
Ogni file di configurazione Terraform deve avere una propria directory (chiamata anche modulo root).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome del file deve avere l'
.tfestensione, ad esempiomain.tf. In questo tutorial, il file viene chiamatomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tfappena creato.Facoltativamente, copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade:terraform init -upgrade
Applicare le modifiche
-
Esamina la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo il comando seguente e inserendo
yesal prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella Google Cloud console, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
API
Chiama il tables.insert metodo
con una risorsa tabella che
contiene una proprietà view.
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'Go API BigQuery.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java BigQuery.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'Node.js API BigQuery.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
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 PythonBigQuery.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Dopo aver creato la vista, puoi eseguirne una query come se fosse una tabella.
Sicurezza delle viste
Per controllare l'accesso alle viste in BigQuery, consulta Viste autorizzate.
Passaggi successivi
- Per informazioni sulla creazione di una vista autorizzata, consulta Creare viste autorizzate.
- Per informazioni su come ottenere i metadati delle viste, consulta Ottieni informazioni sulle viste.
- Per saperne di più sulla gestione delle viste, consulta Gestire le viste.