Esecuzione di query in sessioni

Questo documento descrive come eseguire query in una sessione BigQuery. È destinata agli utenti che hanno già una conoscenza generale delle sessioni, hanno già creato una sessione e conoscono l'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. Per farlo, hai a disposizione le seguenti opzioni:

Console

  1. Nella console Google 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.

Testa la tua sessione

Nella console Google Cloud, apri una scheda dell'editor che contiene una sessione creata da te ed esegui questa istruzione SQL:

CREATE TEMP TABLE Temperature(degrees INT64)  AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;

Elimina o commenta i contenuti nella scheda ed esegui questa istruzione SQL:

SELECT * FROM Temperature;

Assicurati che vengano restituiti 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: sostituiscilo con l'ID della sessione con cui vuoi lavorare.
  • SQL_STATEMENT: un'istruzione SQL da eseguire nella sessione.

Testa la tua sessione

Crea una tabella temporanea denominata Temperature in una sessione che hai creato. 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;'

Visualizza 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 restituiti risultati simili a questi:

+-------+
| total |
+-------+
|    30 |
|     0 |
|     3 |
|    14 |
|    55 |
+-------+

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

Risparmia tempo aggiungendo la tua sessione a .bigqueryrc

Se eseguirai 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 ciascun comando.

Ecco come si presenta 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 un'altra sessione o se una sessione viene chiusa, devi aggiornare .bigqueryrc.

API

Chiama il metodo job.insert o job job.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 il quale creare la sessione.
  • JOB_ID: il job per il quale creare la sessione.
  • SQL_STATEMENT: la prima istruzione SQL per la tua sessione.
  • SESSION_ID: l'ID della sessione.

Testa la tua 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 dati.

{
  "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 nella tabella Temperature in una sessione. Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi dati.

{
  "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 a questo:

{
  "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: la prima istruzione SQL per la tua sessione.
  • SESSION_ID: l'ID della sessione.

Testa la tua 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 dati.

{
  "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 nella tabella Temperature in una sessione. Sostituisci l'ID progetto, l'ID job e l'ID sessione con i tuoi dati.

{
  "query": "SELECT * FROM Temperature;",
  "connectionProperties": [{
    "key": "session_id",
    "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
  }]
}

Assicurati che il corpo della risposta per entrambe le richieste sia simile a questo:

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "statistics": {
    "sessionInfo": {
      "sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
    }
  }
}

Passaggi successivi