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.

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic su Crea nuova query. Si apre una nuova scheda dell'editor.

  3. Fai clic su Altro > Impostazioni query. Viene visualizzato il riquadro Impostazioni query.

  4. Nella sezione Gestione sessioni, fai clic su Usa la modalità sessione per attivare la modalità sessione.

  5. 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.

  6. Fai clic su Salva.

  7. 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

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic sulla scheda dell'editor che contiene la sessione.

  3. 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

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Trova la scheda dell'editor che contiene la sessione e chiudila. La sessione è terminata.

SQL

Per terminare la sessione:

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CALL BQ.ABORT_SESSION();

  3. 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.

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic sulla scheda dell'editor che contiene la sessione.

  3. In Risultati delle query, fai clic su Informazioni job.

  4. 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

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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.
  3. Nella colonna ID sessione, puoi visualizzare gli ID sessione dei tuoi job.

    ID sessione nella cronologia dei job

SQL

Per ottenere un elenco delle tre sessioni più recenti, incluse quelle attive e terminate, esegui la seguente query nella scheda dell'editor:

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 visualizzazione INFORMATION_SCHEMA:
      • JOBS_BY_USER: restituisce solo i job creati dall'utente corrente nel progetto corrente
      • SESSIONS_BY_USER: restituisce solo le sessioni create dall'utente corrente nel progetto corrente
      • SESSIONS_BY_PROJECT: restituisce tutte le sessioni nel progetto corrente

  3. 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.

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Espandi la sezione Cronologia lavorativa.

  3. 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.
  4. Fai clic su Filtro e poi seleziona ID sessione.

  5. 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:

  1. Nella console Trusted Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 lavorare

      Seleziona una delle seguenti visualizzazioni:

      • JOBS_BY_USER: restituisce solo i job creati dall'utente corrente nel progetto corrente
      • SESSIONS_BY_USER: restituisce solo le sessioni create dall'utente corrente nel progetto corrente
      • SESSIONS_BY_PROJECT: restituisce tutte le sessioni nel progetto corrente
    • SESSION_ID: l'ID della sessione per cui recuperare i dati storici

  3. 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