Esecuzione di query nelle sessioni
Questo documento descrive come eseguire query in una sessione BigQuery. È destinato agli utenti che hanno già una conoscenza generale delle sessioni, hanno già creato una sessione e conoscono il ID della sessione che vogliono utilizzare.
Prima di completare questi passaggi, assicurati di disporre delle autorizzazioni necessarie per creare una sessione.
Eseguire una query in una sessione
Dopo aver creato una sessione, puoi aggiungere una query alla sessione ed eseguirla. Esistono diversi modi per farlo:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Fai clic sulla scheda dell'editor contenente la sessione.
Aggiungi la query alla sessione e fai clic su Esegui.
Prova la sessione
Nella console Google Cloud, apri una scheda dell'editor contenente una sessione creata da te ed esegui questo istruzione SQL:
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
Elimina o inserisci un commento per i contenuti della scheda ed esegui questo istruzione SQL:
SELECT * FROM Temperature;
Assicurati che vengano prodotti risultati simili a questi:
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
bq
Apri Cloud Shell
e inserisci il seguente
comando bq query
:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
dove:
- SESSION_ID: sostituisci questo valore con l'ID della sessione con cui vuoi lavorare.
- SQL_STATEMENT: un'istruzione SQL da eseguire nella sessione.
Prova la sessione
Crea una tabella temporanea denominata Temperature
in una
sessione creata. Sostituisci
l'ID sessione con il tuo.
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;'
Ottieni un elenco di tutti i valori nella tabella Temperature
. Sostituisci
l'ID sessione con il tuo.
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
Assicurati che vengano prodotti risultati simili a questi:
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Risparmia tempo aggiungendo la sessione a .bigqueryrc
Se hai intenzione di eseguire molte query con Cloud Shell,
puoi aggiungere il tuo ID sessione a [query]
in
.bigqueryrc
in modo da non dover copiare e incollare l'ID sessione in ogni comando.
Ecco come appare un ID sessione in .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Dopo aver aggiunto l'ID sessione a .bigqueryrc
, puoi utilizzare questo comando:
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
Tieni presente che se vuoi utilizzare una sessione diversa o se una sessione termina, devi aggiornare .bigqueryrc
.
API
Chiama il metodo jobs.insert o jobs.query con una risorsa jobs definita.
jobs.insert
Chiama il metodo
jobs.insert
con
i seguenti parametri:
{ "jobReference": { "projectId": "PROJECT_ID", "jobId": "JOB_ID" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
dove:
- PROJECT_ID: il progetto per cui creare la sessione.
- JOB_ID: il job per cui creare la sessione.
- SQL_STATEMENT: il primo istruzione SQL per la sessione.
- SESSION_ID: l'ID della sessione.
Prova la sessione
Inserisci il seguente corpo della richiesta per creare una tabella temporanea denominata
Temperature
in una sessione creata da te.
Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi.
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
Inserisci il seguente corpo della richiesta per ottenere un elenco di tutti i valori della tabella
Temperature
in una sessione. Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi.
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
Assicurati che il corpo della risposta per entrambe le richieste sia simile al seguente:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
jobs.query
Chiama il metodo
jobs.query
con
i seguenti parametri:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
dove:
- SQL_STATEMENT: il primo istruzione SQL per la sessione.
- SESSION_ID: l'ID della sessione.
Prova la sessione
Inserisci il seguente corpo della richiesta per creare una tabella temporanea denominata
Temperature
in una sessione creata da te.
Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi.
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Inserisci il seguente corpo della richiesta per ottenere un elenco di tutti i valori della tabella
Temperature
in una sessione. Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi.
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Assicurati che il corpo della risposta per entrambe le richieste sia simile al seguente:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}