Utilizzare le sessioni
Questo documento descrive come creare, utilizzare, terminare ed elencare le sessioni.
Prima di completare questi passaggi, assicurati di disporre delle autorizzazioni necessarie.
Creare una sessione
Se vuoi acquisire un gruppo di attività SQL, crea una sessione BigQuery. Dopo aver creato una sessione, puoi eseguire query interattive nella sessione fino a quando la sessione termina. Tutte le query nella sessione vengono eseguite (elaborate) nella località in cui è stata creata la sessione.
Console
Nella console Trusted Cloud , ogni sessione viene assegnata a una scheda dell'editor.
Nella console Trusted Cloud , vai alla pagina BigQuery.
Fai clic su
Crea nuova query. Si apre una nuova scheda dell'editor.Fai clic su Altro > Impostazioni query. Viene visualizzato il riquadro Impostazioni query.
Nella sezione Gestione sessioni, fai clic su Usa la modalità sessione per attivare la modalità sessione.
In Impostazioni aggiuntive > Località dei dati, seleziona la posizione. Dopo la creazione della sessione, tutte le query nella sessione sono limitate a questa località e la località non può essere modificata.
Fai clic su Salva.
Scrivi una query nella scheda Editor ed eseguila. La nuova sessione viene creata dopo l'esecuzione della prima query.
bq
Apri Cloud Shell
e inserisci il seguente
comando bq query
:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
dove:
- SESSION_LOCATION: associa la sessione a una posizione fisica. Limita tutte le query della sessione a questa posizione. Facoltativo.
- SQL_STATEMENT: La prima istruzione SQL per la sessione.
L'ID sessione viene restituito con i risultati della query.
API
Chiama il
metodo jobs.query
con
i seguenti parametri:
{ "query": "SQL_STATEMENT", "createSession": true, ["location": "SESSION_LOCATION"] }
dove:
- SQL_STATEMENT: La prima istruzione SQL per la sessione.
- SESSION_LOCATION: associa la sessione a una posizione fisica. Limita tutte le query della sessione a questa posizione. Facoltativo.
Il corpo della risposta è simile al seguente:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
Eseguire una query in una sessione
Dopo aver creato una sessione, puoi eseguire query al suo interno:
Console
Nella console Trusted Cloud , vai alla pagina BigQuery.
Fai clic sulla scheda dell'editor che contiene la sessione.
Aggiungi la query alla sessione e fai clic su Esegui.
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.
I risultati della query sono seguiti dall'ID sessione.
Se intendi eseguire molte query con Cloud Shell,
puoi aggiungere l'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 omettere il
flag --session_id
dal comando bq query
. Se vuoi utilizzare una
sessione diversa o se una sessione
termina, devi aggiornare il file .bigqueryrc
.
API
Chiama il
metodo jobs.query
con
i seguenti parametri:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
dove:
- SQL_STATEMENT: La prima istruzione SQL per la sessione.
- SESSION_ID: l'ID della sessione.
Terminare una sessione
Una sessione può essere terminata manualmente o automaticamente. La cronologia di una sessione terminata è disponibile per 20 giorni dopo la terminazione.
Terminare automaticamente una sessione
Una sessione termina automaticamente dopo 24 ore di inattività o dopo 7 giorni, a seconda di quale evento si verifica per primo.
Termina la sessione corrente
Puoi terminare la sessione corrente con un'istruzione SQL o nella consoleTrusted Cloud , se la sessione è stata creata lì.
Console
Nella console Trusted Cloud , vai alla pagina BigQuery.
Trova la scheda dell'editor che contiene la sessione e chiudila. La sessione è terminata.
SQL
Per terminare la sessione:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
CALL BQ.ABORT_SESSION();
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Terminare una sessione per ID
Puoi terminare una sessione utilizzando il relativo ID. Non è necessario partecipare alla sessione per terminarla in questo modo.
Recupera l'ID sessione, quindi esegui la seguente istruzione:
CALL BQ.ABORT_SESSION(SESSION_ID);
Sostituisci SESSION_ID con l'ID della sessione da terminare.
Recuperare l'ID della sessione attiva
In alcune situazioni, devi fare riferimento a una sessione per continuare a lavorarci. Ad esempio, se utilizzi Cloud Shell, devi includere l'ID sessione ogni volta che esegui un comando per quella sessione.
Console
Non è necessario fornire l'ID sessione per eseguire una nuova query all'interno di una sessione nella console Trusted Cloud . Puoi continuare a lavorare nella scheda dell'editor che contiene la sessione. Tuttavia, se vuoi fare riferimento alla tua sessione in Cloud Shell o in una chiamata API, devi conoscere l'ID della sessione che hai creato nella console.
Prima di completare questi passaggi, assicurati di aver eseguito almeno una query in una sessione attiva.
Nella console Trusted Cloud , vai alla pagina BigQuery.
Fai clic sulla scheda dell'editor che contiene la sessione.
In Risultati delle query, fai clic su Informazioni job.
Nell'elenco Informazioni sul job, cerca l'ID sessione:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
Per eseguire i comandi di query in una sessione all'interno di Cloud Shell, devi includere l'ID sessione nel comando. Puoi ottenere l'ID sessione quando crei una sessione o elencando le tue sessioni.
Quando crei una sessione con Cloud Shell, l'ID sessione restituito è simile al seguente:
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
Per trasmettere comandi SQL in una sessione con una chiamata API, devi includere l'ID sessione nella chiamata API. Puoi ottenere l'ID sessione quando crei una sessione o elencando le tue sessioni.
Quando crei una sessione con una chiamata API, l'ID sessione nella risposta è simile al seguente:
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Elencare le sessioni attive e inattive
Per ottenere gli ID sessione delle sessioni attive e inattive:
Console
Nella console Trusted Cloud , vai alla pagina BigQuery.
Seleziona il tipo di cronologia lavorativa:
- Per visualizzare le informazioni sui tuoi job recenti, fai clic su Cronologia personale.
- Per visualizzare le informazioni sui job recenti nel tuo progetto, fai clic su Cronologia progetto.
Nella colonna ID sessione, puoi visualizzare gli ID sessione dei tuoi job.
SQL
Per ottenere un elenco delle tre sessioni più recenti, incluse quelle attive e terminate, esegui la seguente query nella scheda dell'editor:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
SELECT session_id, MAX(creation_time) AS last_modified_time FROM
region-us
.INFORMATION_SCHEMA.VIEW WHERE session_id IS NOT NULL AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY) GROUP BY session_id ORDER BY last_modified_time DESC;Sostituisci quanto segue:
VIEW
: la visualizzazioneINFORMATION_SCHEMA
:JOBS_BY_USER
: restituisce solo i job creati dall'utente corrente nel progetto correnteSESSIONS_BY_USER
: restituisce solo le sessioni create dall'utente corrente nel progetto correnteSESSIONS_BY_PROJECT
: restituisce tutte le sessioni nel progetto corrente
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Il risultato è simile al seguente:
+-------------------------------------------------------------------------+ | session_id | last_modified_time | +-------------------------------------------------------------------------+ | CgwKCmZhbGl1LXRlc3QQARokMGQ5YWWYzZmE0YjhkMDBm | 2021-06-01 23:04:26 | | CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZTczwZjA1NDc2 | 2021-05-30 22:43:02 | | CgwKCmZhbGl1LXRlc3QQY2MzLTg4ZDEtYzVhOWZiYmM5NzZk | 2021-04-07 22:31:21 | +-------------------------------------------------------------------------+
Visualizzare la cronologia di una sessione
Una sessione acquisisce le tue attività SQL in un determinato periodo di tempo. Queste informazioni vengono memorizzate nella cronologia della sessione. La cronologia della sessione ti consente di monitorare le modifiche apportate durante la sessione. Se un job non va a buon fine o va a buon fine, viene registrato nella cronologia della sessione, in modo che tu possa tornare indietro in un secondo momento e vedere cosa hai fatto.
Console
Per visualizzare la cronologia di una sessione nella console Trusted Cloud , puoi filtrare la cronologia personale o la cronologia del progetto per ID sessione per visualizzare tutte le query SQL eseguite in una sessione specifica.
Nella console Trusted Cloud , vai alla pagina BigQuery.
Espandi la sezione Cronologia lavorativa.
Seleziona il tipo di cronologia lavorativa che vuoi visualizzare:
- Per visualizzare le informazioni sui tuoi job recenti, fai clic su Cronologia personale.
- Per visualizzare le informazioni sui job recenti nel tuo progetto, fai clic su Cronologia progetto.
Fai clic su
Filtro e poi seleziona ID sessione.Nel campo ID sessione, cerca l'ID sessione:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
Per visualizzare i dati storici di una sessione specifica, prima ottieni l'ID sessione, poi segui questi passaggi:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
Sostituisci quanto segue:
VIEW: la visualizzazione
INFORMATION_SCHEMA
con cui lavorareSeleziona una delle seguenti visualizzazioni:
JOBS_BY_USER
: restituisce solo i job creati dall'utente corrente nel progetto correnteSESSIONS_BY_USER
: restituisce solo le sessioni create dall'utente corrente nel progetto correnteSESSIONS_BY_PROJECT
: restituisce tutte le sessioni nel progetto corrente
- SESSION_ID: l'ID della sessione per cui recuperare i dati storici
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Esempio
Il seguente comando restituisce la cronologia di una sessione con ID sessione
CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
. Puoi sostituire questo ID sessione con uno
tuo.
SELECT creation_time, query FROM region-us.INFORMATION_SCHEMA.JOBS_BY_USER WHERE session_info.session_id = 'CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY);
Il risultato è simile al seguente:
+---------------------+------------------------------------------------------------------------------------------+
| creation_time | query |
+---------------------+------------------------------------------------------------------------------------------+
| 2021-06-01 23:04:26 | SELECT * FROM Purchases; |
| 2021-06-01 23:02:51 | CREATE TEMP TABLE Purchases(total INT64) AS SELECT * FROM UNNEST([10,23,3,14,55]) AS a; |
+---------------------+------------------------------------------------------------------------------------------+
Passaggi successivi
- Consulta la Introduzione alle sessioni.
- Scopri di più su come scrivere query nelle sessioni.