Ejecuta consultas en sesiones
En este documento, se describe cómo ejecutar consultas en una sesión de BigQuery. Está dirigido a usuarios que ya tengan un conocimiento general de las sesiones, ya hayan creado una sesión y conozcan el ID de la sesión que desean usar.
Antes de completar estos pasos, asegúrate de tener los permisos necesarios para crear una sesión.
Ejecuta una consulta en una sesión
Después de crear una sesión, puedes agregar una consulta a esta y ejecutarla. Existen varias formas de hacerlo:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
Haz clic en la pestaña del editor que contiene la sesión.
Agrega tu consulta a la sesión y haz clic en Ejecutar.
Prueba tu sesión
En la consola de Google Cloud, abre una pestaña del editor que contenga una sesión que hayas creado y ejecuta esta instrucción de SQL:
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
Borra o marca como comentario el contenido en la pestaña y ejecuta esta instrucción de SQL:
SELECT * FROM Temperature;
Asegúrate de que se produzcan resultados similares a los siguientes:
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
bq
Abre Cloud Shell y, luego, ingresa el siguiente comando bq query
:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
Donde:
- SESSION_ID: Reemplaza esto por el ID de la sesión con la que deseas trabajar.
- SQL_STATEMENT: Una instrucción de SQL para ejecutar en tu sesión.
Prueba tu sesión
Crea una tabla temporal llamada Temperature
en una sesión que hayas creado. Reemplaza el ID de sesión por el tuyo.
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;'
Obtén una lista de todos los valores en la tabla Temperature
Reemplaza el ID de sesión por el tuyo.
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
Asegúrate de que se produzcan resultados similares a los siguientes:
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Para ahorrar tiempo, agrega la sesión a .bigqueryrc
Si vas a ejecutar muchas consultas con Cloud Shell, puedes agregar el ID de sesión a [query]
en .bigqueryrc
para no tener que copiar y pegar el ID de sesión en cada comando.
Así se ve un ID de sesión en .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Después de que hayas agregado el ID de sesión a .bigqueryrc
, puedes usar este comando en su lugar:
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
Ten en cuenta que, si quieres usar una sesión diferente o si una sesión finaliza, debes actualizar .bigqueryrc
.
API
Llama al método jobs.insert o jobs.query con un recurso jobs definido.
jobs.insert
Llama al método jobs.insert
con los siguientes parámetros:
{ "jobReference": { "projectId": "PROJECT_ID", "jobId": "JOB_ID" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
Donde:
- PROJECT_ID: Es el proyecto para el que se creará la sesión.
- JOB_ID: Es el trabajo para el que se creará la sesión.
- SQL_STATEMENT: Es la primera instrucción de SQL para la sesión.
- SESSION_ID: El ID de la sesión.
Prueba tu sesión
Ingresa el siguiente cuerpo de solicitud para crear una tabla temporal llamada Temperature
en una sesión que hayas creado.
Reemplaza el ID del proyecto, el ID de trabajo y el ID de sesión por los tuyos.
{
"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"
}]
}
}
}
Ingresa el siguiente cuerpo de solicitud para obtener una lista de todos los valores en la tabla Temperature
de una sesión. Reemplaza el ID del proyecto, el ID de trabajo y el ID de sesión por los tuyos.
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
Asegúrate de que el cuerpo de la respuesta de ambas solicitudes sea similar a este:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
jobs.query
Llama al método jobs.query
con los siguientes parámetros:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
Donde:
- SQL_STATEMENT: Es la primera instrucción de SQL para la sesión.
- SESSION_ID: El ID de la sesión.
Prueba tu sesión
Ingresa el siguiente cuerpo de solicitud para crear una tabla temporal llamada Temperature
en una sesión que hayas creado.
Reemplaza el ID del proyecto, el ID de trabajo y el ID de sesión por los tuyos.
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Ingresa el siguiente cuerpo de solicitud para obtener una lista de todos los valores en la tabla Temperature
de una sesión. Reemplaza el ID del proyecto, el ID de trabajo y el ID de sesión por los tuyos.
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Asegúrate de que el cuerpo de la respuesta de ambas solicitudes sea similar a este:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}