Utilizzo delle sessioni

Questo documento descrive come creare, utilizzare, terminare ed elencare le sessioni.

Prima di completare questi passaggi, assicurati di disporre delle autorizzazioni necessarie permessi.

Creare una sessione

Se vuoi acquisire un gruppo di attività SQL, crea una sessione BigQuery. Dopo aver creato una sessione, puoi eseguire query interattive al suo interno fino alla sua chiusura. Tutte le query nella sessione vengono eseguite (elaborate) nella località in cui è stata creata la sessione.

Console

Nella Google Cloud console, a ogni sessione viene assegnata una scheda dell'editor.

  1. Nella Google Cloud console, 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 Utilizza la modalità sessione per abilitare la modalità sessione.

  5. In Impostazioni aggiuntive > Località dei dati, seleziona la località. 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 dell'editor ed eseguila. La nuova sessione viene creata dopo l'esecuzione della prima query.

bq

Apri Cloud Shell e inserisci il seguente bq query comando:

bq query \
--nouse_legacy_sql \
--create_session
[--location 'SESSION_LOCATION'] \
'SQL_STATEMENT'

dove:

  • SESSION_LOCATION: associa la sessione a una località fisica. Limita tutte le query nella sessione a questa località. Facoltativo.
  • SQL_STATEMENT: la prima istruzione SQL per la sessione.

L'ID sessione viene restituito con i risultati della query.

API

Chiama il jobs.query metodo 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 località fisica. Limita tutte le query nella sessione a questa località. 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 Google Cloud console, 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 bq query comando:

bq query \
--nouse_legacy_sql \
--session_id=SESSION_ID \
'SQL_STATEMENT'

dove:

  • SESSION_ID: sostituisci questo valore con l' ID della sessione che vuoi utilizzare.
  • 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 doverlo copiare e incollare 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 un'altra sessione o se una sessione termina, devi aggiornare il file .bigqueryrc.

API

Chiama il jobs.query metodo 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 chiusura.

Terminare automaticamente una sessione

Una sessione viene terminata automaticamente dopo 24 ore di inattività o dopo 7 giorni, a seconda di quale evento si verifica per primo.

Terminare la sessione corrente

Puoi terminare la sessione corrente con un'istruzione SQL o nella Google Cloud console, se la sessione è stata creata lì.

Console

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

    Vai a BigQuery

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

SQL

Per terminare la sessione:

  1. Nella Google Cloud console, 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 saperne di più su come eseguire le query, consulta Eseguire una query interattiva.

Terminare una sessione per ID

Puoi terminare una sessione utilizzando il suo ID. Non devi essere nella sessione per terminarla in questo modo.

Recupera l'ID sessione ed 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 devi fornire l'ID sessione per eseguire una nuova query all'interno di una sessione nella Google Cloud console. Puoi semplicemente continuare a lavorare nella scheda dell'editor che contiene la sessione. Tuttavia, se vuoi fare riferimento alla 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 Google Cloud console, vai alla pagina BigQuery.

    Vai a BigQuery

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

  3. In Risultati query, fai clic su Informazioni sul 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 recuperare l'ID sessione quando crei una sessione o elencando le sessioni.

Quando crei una sessione con Cloud Shell, l'ID sessione restituito è simile al seguente:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

Per passare i comandi SQL a una sessione con una chiamata API, devi includere l'ID sessione nella chiamata API. Puoi recuperare l'ID sessione quando crei una sessione o elencando le 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 recuperare gli ID sessione delle sessioni attive e inattive:

Console

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

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

    Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.

  3. Nel riquadro Explorer, fai clic su Cronologia job.

  4. Seleziona il tipo di cronologia job:

    • Per visualizzare le informazioni sui job recenti, fai clic su Cronologia personale.
    • Per visualizzare le informazioni sui job recenti nel progetto, fai clic su Cronologia progetto.
  5. Nella colonna ID sessione, puoi visualizzare gli ID sessione dei tuoi job.

    ID sessione nella cronologia dei job

SQL

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

  1. Nella Google Cloud console, 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 vista 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 saperne di più 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 archiviate nella cronologia della sessione. La cronologia delle sessioni ti consente di monitorare le modifiche apportate alla sessione. Se un job non riesce o ha esito positivo, viene registrato nella cronologia delle sessioni 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 Google Cloud console, puoi filtrare la cronologia personale o la cronologia progetto per ID sessione per visualizzare tutte le query SQL eseguite in una sessione specifica.

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

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

  3. Nel riquadro Explorer, fai clic su Cronologia job.

  4. Seleziona il tipo di cronologia job che vuoi visualizzare:

    • Per visualizzare le informazioni sui job recenti, fai clic su Cronologia personale.
    • Per visualizzare le informazioni sui job recenti nel progetto, fai clic su Cronologia progetto.
  5. Fai clic su Filtra e poi seleziona ID sessione.

  6. Nel campo ID sessione, cerca l'ID sessione:

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

SQL

Per visualizzare i dati storici di una sessione specifica, recupera prima l'ID sessione, poi segui questi passaggi:

  1. Nella Google Cloud console, 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 vista 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 saperne di più su come eseguire le query, consulta Eseguire una query interattiva.

Esempio

La seguente query restituisce la cronologia di una sessione con l'ID sessione CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0. Puoi sostituire questo ID sessione con uno di tua scelta.

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