esegui una query
Questo documento mostra come eseguire una query in BigQuery e comprendere quanti dati verrà elaborata dalla query prima dell'esecuzione eseguendo una prova.
Query interattive e batch
In BigQuery puoi eseguire due tipi di query:
- Job di query interattivi, ovvero job eseguiti da BigQuery on demand.
- Job di query batch, ovvero job che BigQuery attende di eseguire fino a quando sono disponibili risorse di calcolo inattive.
Per impostazione predefinita, BigQuery esegue le query come job interattivi, che vengono eseguiti il prima possibile. BigQuery calcola dinamicamente il limite di query in parallelo in base alla disponibilità delle risorse e favorisce l'esecuzione di più query interattive in parallelo rispetto alle query batch. Una volta raggiunto il limite di query in parallelo, le query aggiuntive attendono in una coda. Per saperne di più, consulta la sezione Code di query.
BigQuery salva i risultati della query in una tabella temporanea (predefinita) o permanente. Quando specifichi una tabella permanente come tabella di destinazione per i risultati, puoi scegliere se aggiungere o sovrascrivere una tabella esistente oppure 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. -
Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
) su tutte le tabelle e le viste a cui fa riferimento la query. Per eseguire query sulle viste, devi avere questo ruolo anche per tutte le tabelle e le viste sottostanti. Se utilizzi viste autorizzate o set di dati autorizzati, non è necessario accedere ai dati di origine sottostanti.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire un job di query. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per eseguire un job di query sono necessarie le seguenti autorizzazioni:
-
bigquery.jobs.create
sul progetto. -
bigquery.tables.getData
in tutte le tabelle e le viste a cui fa riferimento la query. Per eseguire query sulle viste, devi disporre di questa autorizzazione anche per tutte le tabelle e le viste sottostanti. Se utilizzi viste autorizzate o set di dati autorizzati, non è necessario accedere ai dati di origine sottostanti.
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Per maggiori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.
Esegui una query interattiva
Per eseguire una query interattiva, selezionare una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Fai clic su
Crea una nuova query.Nell'Editor query, inserisci una query GoogleSQL valida.
Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_names
per determinare i nomi più comuni negli Stati Uniti tra il 1910 e il 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;
(Facoltativo) Specifica la tabella e la località di destinazione per i risultati della query:
- Nell'editor query, fai clic su Altro e poi su Impostazioni query.
- Nella sezione Destinazione, seleziona Imposta una tabella di destinazione per i risultati della query.
- In Set di dati, inserisci il nome di un set di dati esistente per la tabella di destinazione, ad esempio
myProject.myDataset
. - In ID tabella, inserisci un nome per la tabella di destinazione, ad esempio
myTable
. Se la tabella di destinazione è esistente, per Preferenza di scrittura della tabella di destinazione scegli se aggiungere o sovrascrivere la tabella con i risultati della query.
Se la tabella di destinazione è nuova, BigQuery la crea quando esegui la query.
Nella sezione Impostazioni aggiuntive, fai clic sul menu Località dei dati e poi seleziona un'opzione.
In questo esempio, il set di dati
usa_names
viene archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, il set di dati che contiene la tabella di destinazione deve trovarsi anche nella località multiregionale degli Stati Uniti. Non puoi eseguire query su un set di dati e scrivere i risultati in una tabella in un'altra.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).
(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 vedere i risultati della query, vai alla scheda Grafico. Puoi aumentare o diminuire lo zoom del grafico, scaricarlo come file PNG o attivare/disattivare la visibilità della legenda.
Nel riquadro Configurazione grafico, puoi modificare il tipo di grafico (a linee, a barre o a dispersione) e configurare le misure e le dimensioni del grafico. 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 seguenti esecuzioni di query nello stesso editor di query. Le dimensioni supportano i tipi di dati
INTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
,BIGNUMERIC
,TIMESTAMP
,DATE
,DATETIME
,TIME
eSTRING
, mentre le misure supportano i tipi di datiINTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
eBIGNUMERIC
.
bq
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
bq query
. Nell'esempio seguente, il flag--use_legacy_sql=false
consente 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_names
per determinare i nomi più comuni negli Stati Uniti tra il 1910 e il 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 e la località di destinazione 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: una o più regioni per la tabella di destinazione, ad esempio
US
In questo esempio, il set di dati
usa_names
viene archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, il set di dati che contiene la tabella di destinazione deve trovarsi anche 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.myTable
Se la tabella di destinazione è nuova, BigQuery crea la tabella quando esegui la query. Tuttavia, devi specificare un set di dati esistente.
Se la tabella non si trova nel progetto attuale, aggiungi l'ID progetto Google Cloud utilizzando il formato
PROJECT_ID:DATASET.TABLE
, ad esempiomyProject:myDataset.myTable
. Se--destination_table
non è 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à query
di configurazione job. (Facoltativo) Specifica la tua località nella proprietà location
nella sezione jobReference
della risorsa job.
Sondaggio per vedere i risultati chiamando il numero
getQueryResults
.
Sondaggio fino a quando jobComplete
non equivale a true
. Verifica la presenza di errori e avvisi nell'elenco
errors
.
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.
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.
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.
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 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.
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.
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.
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.
Per saperne di più, consulta Query interattive e batch.
Eseguire una query batch
Per eseguire una query batch, selezionare una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Fai clic su
Crea una nuova query.Nell'Editor query, inserisci una query GoogleSQL valida.
Ad esempio, esegui una query sul set di dati pubblico BigQuery
usa_names
per determinare i nomi più comuni negli Stati Uniti tra il 1910 e il 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
Altro e poi su Impostazioni query.Nella sezione Gestione delle risorse, seleziona Batch.
(Facoltativo) Specifica la tabella e la località di destinazione per i risultati della query:
- Nella sezione Destinazione, seleziona Imposta una tabella di destinazione per i risultati della query.
- In Set di dati, inserisci il nome di un set di dati esistente per la tabella di destinazione, ad esempio
myProject.myDataset
. - In ID tabella, inserisci un nome per la tabella di destinazione, ad esempio
myTable
. Se la tabella di destinazione è esistente, per Preferenza di scrittura della tabella di destinazione scegli se aggiungere o sovrascrivere la tabella con i risultati della query.
Se la tabella di destinazione è nuova, BigQuery la crea quando esegui la query.
Nella sezione Impostazioni aggiuntive, fai clic sul menu Località dei dati e poi seleziona un'opzione.
In questo esempio, il set di dati
usa_names
viene archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, il set di dati che contiene la tabella di destinazione deve trovarsi anche nella località multiregionale degli Stati Uniti. Non puoi eseguire query su un set di dati e scrivere i risultati in una tabella in un'altra.
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).
(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 vedere i risultati della query, vai alla scheda Grafico. Puoi aumentare o diminuire lo zoom del grafico, scaricarlo come file PNG o attivare/disattivare la visibilità della legenda.
Nel riquadro Configurazione grafico, puoi modificare il tipo di grafico (a linee, a barre o a dispersione) e configurare le misure e le dimensioni del grafico. 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 seguenti esecuzioni di query nello stesso editor di query. Le dimensioni supportano i tipi di dati
INTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
,BIGNUMERIC
,TIMESTAMP
,DATE
,DATETIME
,TIME
eSTRING
, mentre le misure supportano i tipi di datiINTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
eBIGNUMERIC
.
bq
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il comando
bq query
e specifica il flag--batch
. Nell'esempio seguente, il flag--use_legacy_sql=false
consente di utilizzare la sintassi di 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_names
per determinare i nomi più comuni negli Stati Uniti tra il 1910 e il 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 e la località di destinazione 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: una o più regioni per la tabella di destinazione, ad esempio
US
In questo esempio, il set di dati
usa_names
viene archiviato nella località multiregionale degli Stati Uniti. Se specifichi una tabella di destinazione per questa query, il set di dati che contiene la tabella di destinazione deve trovarsi anche 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.myTable
Se la tabella di destinazione è nuova, BigQuery crea la tabella quando esegui la query. Tuttavia, devi specificare un set di dati esistente.
Se la tabella non si trova nel progetto attuale, aggiungi l'ID progetto Google Cloud utilizzando il formato
PROJECT_ID:DATASET.TABLE
, ad esempiomyProject:myDataset.myTable
. Se--destination_table
non è 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à query
di configurazione job. (Facoltativo) Specifica la tua località nella proprietà location
nella 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
.
Sondaggio per vedere i risultati chiamando il numero
getQueryResults
.
Sondaggio fino a quando jobComplete
non equivale a true
. Verifica la presenza di errori e avvisi nell'elenco
errors
.
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.
Java
Per eseguire una query batch, imposta la priorità delle query su QueryJobConfiguration.Priority.BATCH durante la creazione di QueryJobConfiguration.
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.
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.
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.
Per saperne di più, consulta Query interattive e batch.
Quote
Per informazioni sulle quote relative alle query interattive e batch, consulta Job di query.
Visualizza il numero di query interattive e batch
Puoi visualizzare il numero di query interattive e batch utilizzando la visualizzazione INFORMATION_SCHEMA.JOBS_BY_PROJECT
.
L'esempio seguente utilizza la visualizzazione INFORMATION_SCHEMA.JOBS_BY_PROJECT
per ottenere il numero di query interattive e batch eseguite nelle ultime 7 ore:
SELECT
priority,
COUNT(*) active_jobs,
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 hour)
AND end_time IS NULL
AND job_type = 'QUERY'
GROUP BY priority
La vista INFORMATION_SCHEMA.JOBS_BY_PROJECT
utilizza il campo priority
per
indicare se una query è INTERACTIVE
o BATCH
. Per ulteriori informazioni, consulta la sezione Schema.
Esegui una prova
Una prova in BigQuery fornisce le seguenti informazioni:
- stima degli addebiti in modalità on demand
- la convalida della query
- dimensioni e complessità approssimative della query in modalità capacità
Le esecuzioni di prova non utilizzano slot di query e non ti vengono addebitati costi per le prove. Puoi utilizzare la stima restituita in una prova di prova per calcolare i costi delle query nel Calcolatore prezzi.
Esegui prove
Per eseguire una prova, segui questi passaggi:
Console
Vai alla pagina di BigQuery.
Inserisci la query nell'Editor query.
Se la query è valida, viene visualizzato automaticamente un segno di spunta insieme alla quantità di dati che verrà elaborata dalla query. Se la query non è valida, viene visualizzato un punto esclamativo insieme a 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 produce la seguente risposta:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Per eseguire una prova utilizzando l'API, invia un job di query con dryRun
impostato su true
nel tipo JobConfiguration.
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.
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.
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.
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.
Python
Imposta la proprietà QueryJobConfig.dry_run su True
.
Client.query()
restituisce sempre un
QueryJob
completato quando viene fornita una configurazione di query di prova.
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.
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.