Esegui una query
BigQuery ti consente di eseguire query immediatamente (in modo interattivo), in batch o in modo continuo, a seconda del tuo caso d'uso. Per convalidare la sintassi SQL e stimare la quantità di dati elaborati dalla query per controllare meglio i costi, puoi eseguire un dry run.
Tipi di query
Puoi eseguire query sui dati BigQuery utilizzando uno dei seguenti tipi di job di query:
Job di query interattivi. Per impostazione predefinita, BigQuery esegue le query come job di query interattive, che devono essere eseguiti il più rapidamente possibile.
Job di query batch. Le query batch hanno una priorità inferiore rispetto alle query interattive. Quando un progetto o una prenotazione utilizza tutte le risorse di calcolo disponibili, è più probabile che le query batch vengano messe in coda e rimangano in coda. Dopo l'avvio, una query batch viene eseguita come una query interattiva. Per saperne di più, consulta Code di query.
Job di query continue. Con questi job, la query viene eseguita continuamente, consentendoti di analizzare i dati in entrata in BigQuery in tempo reale e poi scrivere i risultati in una tabella BigQuery o esportarli in Bigtable o Pub/Sub. Puoi utilizzare questa funzionalità per eseguire attività urgenti, come la creazione e l'applicazione immediata di insight, l'applicazione dell'inferenza di machine learning (ML) in tempo reale e la creazione di pipeline di dati basate su eventi.
Puoi eseguire job di query utilizzando i seguenti metodi:
- Crea ed esegui una query nella consoleGoogle Cloud .
- Esegui il comando
bq querynello strumento a riga di comando bq. - Chiama in modo programmatico il metodo
jobs.queryojobs.insertnell'API REST di BigQuery. - Utilizza le librerie client di BigQuery.
BigQuery salva i risultati delle query in una tabella temporanea (impostazione predefinita) o in una tabella permanente. Quando specifichi una tabella permanente come tabella di destinazione per i risultati, puoi scegliere se aggiungere o sovrascrivere una tabella esistente o creare una nuova tabella con un nome univoco.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire un job di query, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Utente job BigQuery (
roles/bigquery.jobUser) sul progetto. - BigQuery Data Viewer (
roles/bigquery.dataViewer) su tutte le tabelle e le viste a cui fa riferimento la query. Per eseguire query sulle viste, devi disporre di questo ruolo anche su tutte le tabelle e le viste sottostanti. Se utilizzi viste autorizzate o set di dati autorizzati, non hai bisogno di accedere ai dati di origine sottostanti.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire un job di query. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eseguire un job di query sono necessarie le seguenti autorizzazioni:
-
bigquery.jobs.createsul progetto da cui viene eseguita la query, indipendentemente da dove sono archiviati i dati. -
bigquery.tables.getDatasu tutte le tabelle e le viste a cui fa riferimento la query. Per eseguire query sulle viste, devi disporre di questa autorizzazione anche su tutte le tabelle e le viste sottostanti. Se utilizzi viste autorizzate o set di dati autorizzati, non hai bisogno di accedere ai dati di origine sottostanti.
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Risoluzione dei problemi
Access Denied: Project [project_id]: User does not have bigquery.jobs.create
permission in project [project_id].
Questo errore si verifica quando un'entità non dispone dell'autorizzazione per creare job di query nel progetto.
Risoluzione: un amministratore deve concederti l'autorizzazione bigquery.jobs.create per il progetto su cui stai eseguendo la query. Questa autorizzazione è necessaria in aggiunta a qualsiasi autorizzazione richiesta per accedere ai dati oggetto della query.
Per saperne di più sulle autorizzazioni di BigQuery, consulta Controllo dell'accesso con IAM.
Esegui una query interattiva
Per eseguire una query interattiva, seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Fai clic su Query SQL.
Nell'editor di query, inserisci una query GoogleSQL valida.
Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;In alternativa, puoi utilizzare il riquadro Riferimento per creare nuove query.
(Facoltativo) Per visualizzare automaticamente i suggerimenti di codice quando digiti una query, fai clic su Strumenti > Completamento automatico basato sul parser. Se non hai bisogno dei suggerimenti di completamento automatico, deseleziona Completamento automatico basato sul parser. In questo modo vengono disattivati anche i suggerimenti di compilazione automatica del nome del progetto.
(Facoltativo) Per selezionare altre impostazioni di query, fai clic su Modifica > Impostazioni query.
Fai clic su Esegui.
Se non specifichi una tabella di destinazione, il job di query scrive l'output in una tabella temporanea (cache).
Ora puoi esplorare i risultati della query nella scheda Risultati del riquadro Risultati delle query.
(Facoltativo) Per ordinare i risultati della query per colonna, fai clic su Apri menu di ordinamento accanto al nome della colonna e seleziona un ordinamento. Se i byte stimati elaborati per l'ordinamento sono maggiori di zero, il numero di byte viene visualizzato nella parte superiore del menu.
(Facoltativo) Per visualizzare la visualizzazione dei risultati della query, vai alla scheda Visualizzazione. Puoi aumentare o diminuire lo zoom del grafico, scaricarlo come file PNG o attivare/disattivare la visibilità della legenda.
Nel riquadro Configurazione della visualizzazione, puoi modificare il tipo di visualizzazione e configurare le misure e le dimensioni della visualizzazione. I campi di questo riquadro sono precompilati con la configurazione iniziale dedotta dallo schema della tabella di destinazione della query. La configurazione viene conservata tra le esecuzioni delle query successive nello stesso editor di query.
Per le visualizzazioni A linee, A barre o A dispersione, le dimensioni supportate sono i tipi di dati
INT64,FLOAT64,NUMERIC,BIGNUMERIC,TIMESTAMP,DATE,DATETIME,TIMEeSTRING, mentre le misure supportate sono i tipi di datiINT64,FLOAT64,NUMERICeBIGNUMERIC.Se i risultati della query includono il tipo
GEOGRAPHY, Mappa è il tipo di visualizzazione predefinito, che ti consente di visualizzare i risultati su una mappa interattiva.(Facoltativo) Nella scheda JSON, puoi esplorare i risultati della query nel formato JSON, dove la chiave è il nome della colonna e il valore è il risultato per quella colonna.
bq
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
bq query. Nell'esempio seguente, il flag--use_legacy_sql=falseconsente di utilizzare la sintassi GoogleSQL.bq query \ --use_legacy_sql=false \ 'QUERY'
Sostituisci QUERY con una query GoogleSQL valida. Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:bq query \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Il job di query scrive l'output in una tabella temporanea (cache).
Se vuoi, puoi specificare la tabella di destinazione e la località per i risultati della query. Per scrivere i risultati in una tabella esistente, includi il flag appropriato per aggiungere (
--append_table=true) o sovrascrivere (--replace=true) la tabella.bq query \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Sostituisci quanto segue:
LOCATION: la regione o la multiregione per la tabella di destinazione, ad esempio
USIn questo esempio, il set di dati
usa_namesè archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, anche il set di dati che contiene la tabella di destinazione deve trovarsi nella località multiregionale degli Stati Uniti. Non puoi eseguire query su un set di dati in una località e scrivere i risultati in una tabella in un'altra località.Puoi impostare un valore predefinito per la località utilizzando il file.bigqueryrc.
TABLE: un nome per la tabella di destinazione, ad esempio
myDataset.myTableSe la tabella di destinazione è una nuova tabella, BigQuery la crea quando esegui la query. Tuttavia, devi specificare un set di dati esistente.
Se la tabella non si trova nel progetto corrente, aggiungi l'ID progettoGoogle Cloud utilizzando il formato
PROJECT_ID:DATASET.TABLE, ad esempiomyProject:myDataset.myTable. Se--destination_tablenon è specificato, viene generato un job di query che scrive l'output in una tabella temporanea.
Terraform
Utilizza la risorsa google_bigquery_job.
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 esegue una query. Puoi recuperare i risultati della query visualizzando i dettagli del job:
Per applicare la configurazione Terraform in un progetto Google Cloud , completa i passaggi descritti nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud 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.
Prepara la directory
Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf, ad esempiomain.tf. In questo tutorial, il file è denominatomain.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 opzione è 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 l'ultima versione del provider Google, includi l'opzione
-upgrade:terraform init -upgrade
Applica 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!".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
API
Per eseguire una query utilizzando l'API, inserisci un nuovo job e compila la proprietà di configurazione del job query. Facoltativamente, specifica la tua località nella proprietà location nella sezione jobReference della risorsa job.
Esegui il polling dei risultati chiamando getQueryResults.
Esegui il polling finché jobComplete non è uguale a true. Controlla la presenza di errori e avvisi nell'elenco errors.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery C#.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
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'API BigQuery Go.
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 di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Per eseguire una query con un proxy, consulta Configurazione di un proxy.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'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 le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery PHP.
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 BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Ruby.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Dry run
Un dry run in BigQuery fornisce le seguenti informazioni:
- stima degli addebiti in modalità on demand
- convalida della query
- Byte approssimativi elaborati dalla query in modalità capacità
I dry run non utilizzano slot di query e non ti vengono addebitati costi per l'esecuzione di un dry run. Puoi utilizzare la stima restituita da un dry run per calcolare i costi delle query nel Calcolatore prezzi.
Esegui un dry run
Per eseguire un dry run, segui questi passaggi:
Console
Vai alla pagina BigQuery.
Inserisci la query nell'editor di query.
Se la query è valida, viene visualizzato automaticamente un segno di spunta insieme alla quantità di dati che verranno elaborati dalla query. Se la query non è valida, viene visualizzato un punto esclamativo con un messaggio di errore.
bq
Inserisci una query come la seguente utilizzando il flag --dry_run.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Per una query valida, il comando genera la seguente risposta:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Per eseguire un dry run utilizzando l'API, invia un job di query con dryRun impostato su true nel tipo JobConfiguration.
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'API BigQuery Go.
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 di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
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 di Node.js nella guida rapida di BigQuery per l'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 le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery PHP.
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
Imposta la proprietà QueryJobConfig.dry_run su True.
Client.query() restituisce sempre un QueryJob completato quando viene fornita una configurazione di query dry run.
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 BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Risolvi i problemi relativi alle query
Per informazioni sulla risoluzione dei problemi durante l'esecuzione delle query, consulta Risolvi i problemi relativi alle query.
Esegui una query batch
Per eseguire una query batch, seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Fai clic su Query SQL.
Nell'editor di query, inserisci una query GoogleSQL valida.
Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;Fai clic su Modifica > Impostazioni query.
Nella sezione Gestione delle risorse, seleziona Batch.
(Facoltativo) Modifica le impostazioni della query.
Fai clic su Salva.
Fai clic su Esegui.
Se non specifichi una tabella di destinazione, il job di query scrive l'output in una tabella temporanea (cache).
bq
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
bq querye specifica il flag--batch. Nell'esempio seguente, il flag--use_legacy_sql=falseconsente di utilizzare la sintassi GoogleSQL.bq query \ --batch \ --use_legacy_sql=false \ 'QUERY'
Sostituisci QUERY con una query GoogleSQL valida. Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:bq query \ --batch \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Il job di query scrive l'output in una tabella temporanea (cache).
Se vuoi, puoi specificare la tabella di destinazione e la località per i risultati della query. Per scrivere i risultati in una tabella esistente, includi il flag appropriato per aggiungere (
--append_table=true) o sovrascrivere (--replace=true) la tabella.bq query \ --batch \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Sostituisci quanto segue:
LOCATION: la regione o la multiregione per la tabella di destinazione, ad esempio
USIn questo esempio, il set di dati
usa_namesè archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, anche il set di dati che contiene la tabella di destinazione deve trovarsi nella località multiregionale degli Stati Uniti. Non puoi eseguire query su un set di dati in una località e scrivere i risultati in una tabella in un'altra località.Puoi impostare un valore predefinito per la località utilizzando il file.bigqueryrc.
TABLE: un nome per la tabella di destinazione, ad esempio
myDataset.myTableSe la tabella di destinazione è una nuova tabella, BigQuery la crea quando esegui la query. Tuttavia, devi specificare un set di dati esistente.
Se la tabella non si trova nel progetto corrente, aggiungi l'ID progettoGoogle Cloud utilizzando il formato
PROJECT_ID:DATASET.TABLE, ad esempiomyProject:myDataset.myTable. Se--destination_tablenon è specificato, viene generato un job di query che scrive l'output in una tabella temporanea.
API
Per eseguire una query utilizzando l'API, inserisci un nuovo job e compila la proprietà di configurazione del job query. Se vuoi, specifica la tua località nella proprietà location della sezione jobReference della risorsa job.
Quando compili le proprietà del job di query, includi la proprietà configuration.query.priority e imposta il valore su BATCH.
Esegui il polling dei risultati chiamando getQueryResults.
Esegui il polling finché jobComplete non è uguale a true. Controlla la presenza di errori e avvisi nell'elenco errors.
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'API BigQuery Go.
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
Per eseguire una query batch, imposta la priorità della query su QueryJobConfiguration.Priority.BATCH durante la creazione di un QueryJobConfiguration.
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
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 di Node.js nella guida rapida di BigQuery per l'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 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 BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Esegui una query continua
L'esecuzione di un job di query continua richiede una configurazione aggiuntiva. Per saperne di più, consulta Crea query continue.
Utilizza il riquadro Riferimento
Nell'editor di query, il riquadro Riferimento mostra in modo dinamico informazioni sensibili al contesto su tabelle, snapshot, viste e viste materializzate. Il riquadro ti consente di visualizzare l'anteprima dei dettagli dello schema di queste risorse o di aprirle in una nuova scheda. Puoi anche utilizzare il riquadro Riferimento per creare nuove query o modificare quelle esistenti inserendo snippet di query o nomi di campi.
Per creare una nuova query utilizzando il riquadro Riferimento, segui questi passaggi:
Nella console Google Cloud , vai alla pagina BigQuery.
Fai clic su Query SQL.
Fai clic su quick_reference_all Riferimento.
Fai clic su una tabella o una vista recente o aggiunta a Speciali. Puoi anche utilizzare la barra di ricerca per trovare tabelle e viste.
Fai clic su Visualizza azioni, quindi su Inserisci snippet di query.

(Facoltativo) Puoi visualizzare l'anteprima dei dettagli dello schema della tabella o della vista oppure aprirli in una nuova scheda.
Ora puoi modificare la query manualmente o inserire i nomi dei campi direttamente nella query. Per inserire un nome di campo, posiziona il puntatore del mouse e fai clic su un punto dell'editor di query in cui vuoi inserire il nome di campo, quindi fai clic sul nome di campo nel riquadro Riferimento.
Impostazioni query
Quando esegui una query, puoi specificare le seguenti impostazioni:
Una tabella di destinazione per i risultati della query.
La priorità del job.
Se utilizzare i risultati delle query memorizzati nella cache.
Il timeout del job in millisecondi.
Se utilizzare la modalità sessione.
Il tipo di crittografia da utilizzare.
Il numero massimo di byte fatturati per la query.
Il dialetto SQL da utilizzare.
La località in cui eseguire la query. La query deve essere eseguita nella stessa località delle tabelle a cui fa riferimento.
La prenotazione in cui eseguire la query.
Modalità di creazione job facoltativa
La modalità di creazione job facoltativa può migliorare la latenza complessiva delle query che vengono eseguite per un breve periodo di tempo, ad esempio quelle dei workload di dashboard o esplorazione dei dati. Questa modalità esegue la query e restituisce i risultati in linea per le istruzioni SELECT senza richiedere l'utilizzo di jobs.getQueryResults per recuperare i risultati. Le query che utilizzano la modalità di creazione job facoltativa non creano un job quando vengono eseguite, a meno che BigQuery non stabilisca che la creazione di un job è necessaria per completare la query.
Per attivare la modalità di creazione job facoltativa, imposta il campo jobCreationMode dell'istanza
QueryRequest
su JOB_CREATION_OPTIONAL nel
corpo della richiesta jobs.query.
Quando il valore di questo campo è impostato su JOB_CREATION_OPTIONAL, BigQuery determina se la query può utilizzare la modalità di creazione job facoltativa. In questo caso, BigQuery esegue la query e restituisce tutti i risultati nel campo rows della risposta. Poiché non viene creato un job per questa query, BigQuery non restituisce un jobReference nel corpo della risposta. Restituisce invece un campo queryId, che puoi utilizzare per ottenere
informazioni sulla query utilizzando la vista
INFORMATION_SCHEMA.JOBS. Poiché non viene creato alcun job, non esiste alcun jobReference che possa essere passato alle API jobs.get e jobs.getQueryResults per cercare queste query.
Se BigQuery determina che è necessario un job per completare la query, viene restituito un jobReference. Puoi esaminare il campo job_creation_reason nella vista INFORMATION_SCHEMA.JOBS per determinare il motivo per cui è stato creato un job per la query. In questo caso, devi utilizzare jobs.getQueryResults per recuperare i risultati al termine della query.
Quando utilizzi il valore JOB_CREATION_OPTIONAL, il campo jobReference potrebbe non essere presente nella risposta. Verifica se il campo esiste prima di accedervi.
Quando JOB_CREATION_OPTIONAL è specificato per le query con più istruzioni (script), BigQuery potrebbe ottimizzare il processo di esecuzione. Nell'ambito di questa ottimizzazione, BigQuery potrebbe determinare che può completare lo script creando meno risorse job rispetto al numero di singole istruzioni, potenzialmente anche eseguendo l'intero script senza creare alcun job.
Questa ottimizzazione dipende dalla valutazione dello script da parte di BigQuery e potrebbe non essere applicata in tutti i casi. L'ottimizzazione è completamente automatizzata dal sistema. Non sono richiesti controlli o azioni da parte dell'utente.
Per eseguire una query utilizzando la modalità di creazione job facoltativa, seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Fai clic su Query SQL.
Nell'editor di query, inserisci una query GoogleSQL valida.
Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;Fai clic su Modifica > Modalità query > Creazione di job facoltativa. Per confermare questa scelta, fai clic su Conferma.
Fai clic su Esegui.
bq
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
bq querye specifica il flag--job_creation_mode=JOB_CREATION_OPTIONAL. Nell'esempio seguente, il flag--use_legacy_sql=falseconsente di utilizzare la sintassi GoogleSQL.bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=LOCATION \ 'QUERY'
Sostituisci QUERY con una query GoogleSQL valida e LOCATION con una regione valida in cui si trova il set di dati. Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_namesper determinare i nomi più comuni negli Stati Uniti tra gli anni 1910 e 2013:bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=us \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'Il job di query restituisce l'output in linea nella risposta.
API
Per eseguire una query in modalità di creazione job facoltativa utilizzando l'API, esegui una query in modo sincrono
e compila la proprietà QueryRequest. Includi la proprietà jobCreationMode e impostane il valore su JOB_CREATION_OPTIONAL.
Controlla la risposta. Se jobComplete è uguale a true e jobReference è vuoto, leggi i risultati dal campo rows. Puoi anche ottenere il queryId dalla risposta.
Se è presente jobReference, puoi controllare jobCreationReason per scoprire perché un job è stato creato da BigQuery. Esegui il polling dei risultati chiamando getQueryResults.
Esegui il polling finché jobComplete non è uguale a true. Controlla la presenza di errori e avvisi nell'elenco errors.
Java
Versione disponibile: 2.51.0 e successive
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Per eseguire una query con un proxy, consulta Configurazione di un proxy.
Python
Versione disponibile: 3.34.0 e successive
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 BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Nodo
Versione disponibile: 8.1.0 e successive
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'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 le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Vai
Versione disponibile: 1.69.0 e successive
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'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Driver JDBC
Versione disponibile: JDBC v1.6.1 e successive
Richiede l'impostazione di JobCreationMode=2 nella stringa di connessione.
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;JobCreationMode=2;Location=US;
Driver ODBC
Versione disponibile: ODBC v3.0.7.1016 e successive
Richiede l'impostazione di JobCreationMode=2 nel file .ini.
[ODBC Data Sources] Sample DSN=Simba Google BigQuery ODBC Connector 64-bit [Sample DSN] JobCreationMode=2
Query globali
Le query vengono eseguite nella località dei dati a cui fanno riferimento. Tuttavia, se una query fa riferimento a dati archiviati in più località, viene eseguita una query globale. Quando esegui una query globale, BigQuery è in grado di raccogliere tutti i dati necessari da diverse località in un unico posto, eseguire una query e restituire i risultati. Poiché le query globali richiedono il trasferimento di dati tra località, richiedono autorizzazioni aggiuntive e possono comportare costi aggiuntivi.
Per saperne di più sulle query globali, consulta Query globali.
Quote
Per informazioni sulle quote relative alle query interattive e batch, consulta Job di query.
Per risolvere gli errori di quota relativi alle query, consulta la pagina Risoluzione dei problemi di BigQuery. I seguenti errori relativi alle quote e le relative informazioni per la risoluzione dei problemi sono direttamente correlati alle query:
- Errori relativi al limite della coda di query
- Errori relativi alla quota di importazioni di tabelle o aggiunte di query
Monitora le query
Puoi ottenere informazioni sulle query durante la loro esecuzione utilizzando Esplora job o eseguendo una query sulla vista INFORMATION_SCHEMA.JOBS_BY_PROJECT.
Runtime avanzato
Il runtime avanzato di BigQuery è un insieme di miglioramenti delle prestazioni progettati per accelerare automaticamente i workload analitici senza richiedere l'intervento dell'utente o modifiche al codice. Le query sfruttano automaticamente le ottimizzazioni del runtime avanzato quando sono disponibili la vettorizzazione avanzata o le ottimizzazioni delle query brevi.
Vettorizzazione migliorata
L'esecuzione vettorizzata è un modello di elaborazione delle query che opera su colonne di dati in blocchi che si allineano alle dimensioni della cache della CPU e utilizza istruzioni SIMD (Single Instruction, Multiple Data). La vettorizzazione avanzata estende l'esecuzione delle query vettorizzate in BigQuery ai seguenti aspetti dell'elaborazione delle query:
- Sfruttando codifiche di dati specializzate all'interno del formato di archiviazione Capacitor, le operazioni di valutazione dei filtri possono essere eseguite sui dati codificati.
- Le codifiche specializzate vengono propagate attraverso il piano di query, il che consente di elaborare più dati mentre sono ancora codificati.
- Implementando il folding delle espressioni per valutare le funzioni deterministiche e le espressioni costanti, BigQuery può semplificare i predicati complessi in valori costanti.
Ottimizzazioni delle query brevi
In genere, BigQuery esegue le query in un ambiente distribuito utilizzando un livello intermedio di shuffle. Le ottimizzazioni delle query brevi identificano dinamicamente le query che possono essere eseguite in un'unica fase, riducendo la latenza e il consumo di slot. Le codifiche specializzate possono essere utilizzate in modo più efficace quando una query viene eseguita in un'unica fase. Queste ottimizzazioni sono più efficaci se utilizzate con la modalità di creazione job facoltativa, che riduce al minimo la latenza di avvio, manutenzione e recupero dei risultati dei job.
L'idoneità alle ottimizzazioni per le query brevi è dinamica e influenzata dai seguenti fattori:
- La dimensione prevista dell'analisi dei dati.
- La quantità di spostamento dei dati richiesta.
- La selettività dei filtri delle query.
- Il tipo e il layout fisico dei dati nello spazio di archiviazione.
- La struttura complessiva della query.
- Le statistiche storiche delle esecuzioni di query passate.
Stima l'impatto del runtime avanzato
Per stimare l'impatto del runtime avanzato, puoi utilizzare la seguente query SQL per identificare le query del progetto con il miglioramento stimato maggiore del tempo di esecuzione:
WITH
jobs AS (
SELECT
*,
query_info.query_hashes.normalized_literals AS query_hash,
TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS elapsed_ms,
EXISTS(
SELECT 1
FROM UNNEST(JSON_QUERY_ARRAY(query_info.optimization_details.optimizations)) AS o
WHERE JSON_VALUE(o, '$.enhanced_vectorization') = 'applied'
) AS has_advanced_runtime
FROM region-LOCATION.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE EXTRACT(DATE FROM creation_time) > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
),
most_recent_jobs_without_advanced_runtime AS (
SELECT *
FROM jobs
WHERE NOT has_advanced_runtime
QUALIFY ROW_NUMBER() OVER (PARTITION BY query_hash ORDER BY end_time DESC) = 1
)
SELECT
job.job_id,
100 * SAFE_DIVIDE(
original_job.elapsed_ms - job.elapsed_ms,
original_job.elapsed_ms) AS percent_execution_time_saved,
job.elapsed_ms AS new_elapsed_ms,
original_job.elapsed_ms AS original_elapsed_ms,
FROM jobs AS job
INNER JOIN most_recent_jobs_without_advanced_runtime AS original_job
USING (query_hash)
WHERE
job.has_advanced_runtime
AND original_job.end_time < job.start_time
ORDER BY percent_execution_time_saved DESC
LIMIT 10;
Sostituisci quanto segue:
LOCATION: la località in cui deve essere misurato il rendimento del job
Se è stato applicato il runtime avanzato, i risultati di questa query potrebbero essere simili ai seguenti:
/*--------------+----------------------------+----------------+---------------------*
| job_id | percent_elapsed_time_saved | new_elapsed_ms | original_elapsed_ms |
+--------------+----------------------------+----------------+---------------------+
| sample_job1 | 45.38834951456311 | 225 | 412 |
| sample_job2 | 45.19480519480519 | 211 | 385 |
| sample_job3 | 33.246753246753244 | 257 | 385 |
| sample_job4 | 29.28802588996764 | 1311 | 1854 |
| sample_job5 | 28.18181818181818 | 1027 | 1430 |
| sample_job6 | 25.804195804195807 | 1061 | 1430 |
| sample_job7 | 25.734265734265733 | 1062 | 1430 |
| sample_job8 | 25.454545454545453 | 1066 | 1430 |
| sample_job9 | 25.384615384615383 | 1067 | 1430 |
| sample_job10 | 25.034965034965033 | 1072 | 1430 |
*--------------+----------------------------+----------------+---------------------*/
I risultati di questa query sono solo una stima dell'impatto del runtime avanzato. Molti fattori possono influire sulle prestazioni delle query, tra cui, a titolo esemplificativo, la disponibilità degli slot, la variazione dei dati nel tempo, le definizioni delle viste o delle funzioni definite dall'utente e le differenze nei valori dei parametri di query.
Se i risultati di questa query sono vuoti, significa che nessun job ha utilizzato il runtime avanzato o che tutti i job sono stati ottimizzati più di 30 giorni fa.
Questa query può essere applicata ad altre metriche sul rendimento delle query, come total_slot_ms e total_bytes_billed. Per saperne di più, consulta lo schema per INFORMATION_SCHEMA.JOBS_BY_PROJECT.
Passaggi successivi
- Scopri come gestire i job di query.
- Scopri come visualizzare la cronologia delle query.
- Scopri come salvare e condividere le query.
- Scopri di più sulle code di query.
- Scopri come scrivere i risultati delle query.