Trabajar con sesiones
En este documento se describe cómo crear, usar, finalizar y enumerar tus sesiones.
Antes de completar estos pasos, asegúrate de que tienes los permisos necesarios.
Crear una sesión
Si quieres registrar un grupo de tus actividades de SQL, crea una sesión de BigQuery. Después de crear una sesión, puedes ejecutar consultas interactivas en ella hasta que finalice. Todas las consultas de la sesión se ejecutan (procesan) en la ubicación en la que se creó la sesión.
Consola
En la Google Cloud consola, cada sesión se asigna a una pestaña del editor.
En la Google Cloud consola, ve a la página BigQuery.
Haz clic en
Redactar nueva consulta. Se abrirá una nueva pestaña del editor.Haz clic en Más > Configuración de consultas. Aparecerá el panel Configuración de consultas.
En la sección Gestión de sesiones, haz clic en Usar modo de sesión para habilitar el modo de sesión.
En Configuración adicional > Ubicación de los datos, selecciona la ubicación. Una vez creada la sesión, todas las consultas de la sesión se limitan a esta ubicación y no se puede cambiar.
Haz clic en Guardar.
Escribe una consulta en la pestaña del editor y ejecútala. La nueva sesión se crea después de ejecutar esta primera consulta.
bq
Abre Cloud Shell
y escribe el siguiente comando
bq query
:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
donde:
- SESSION_LOCATION: vincula la sesión a una ubicación física. Restringe todas las consultas de la sesión a esta ubicación. Opcional.
- SQL_STATEMENT: la primera instrucción SQL de tu sesión.
Tu ID de sesión se devuelve con los resultados de la consulta.
API
Llama al método jobs.query
con los siguientes parámetros:
{ "query": "SQL_STATEMENT", "createSession": true, ["location": "SESSION_LOCATION"] }
donde:
- SQL_STATEMENT: la primera instrucción SQL de tu sesión.
- SESSION_LOCATION: vincula la sesión a una ubicación física. Restringe todas las consultas de la sesión a esta ubicación. Opcional.
El cuerpo de la respuesta es similar al siguiente:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
Ejecutar una consulta en una sesión
Una vez que hayas creado una sesión, podrás ejecutar consultas en ella:
Consola
En la Google Cloud consola, ve a la página BigQuery.
Haz clic en la pestaña del editor que contenga la sesión.
Añade tu consulta a la sesión y haz clic en Ejecutar.
bq
Abre Cloud Shell
y escribe el siguiente comando
bq query
:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
donde:
- SESSION_ID: sustitúyelo por el ID de la sesión con la que quieras trabajar.
- SQL_STATEMENT: una instrucción SQL que se va a ejecutar en tu sesión.
Los resultados de la consulta van seguidos de tu ID de sesión.
Si vas a ejecutar muchas consultas con Cloud Shell, puedes añadir tu ID de sesión a [query]
en .bigqueryrc
para no tener que copiar y pegar el ID de sesión en cada comando.
Este es el aspecto de un ID de sesión en .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Una vez que haya añadido el ID de sesión a .bigqueryrc
, puede omitir la marca --session_id
del comando bq query
. Si quieres usar otra sesión o si una sesión finaliza, debes actualizar el archivo .bigqueryrc
.
API
Llama al método jobs.query
con los siguientes parámetros:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
donde:
- SQL_STATEMENT: la primera instrucción SQL de tu sesión.
- SESSION_ID: el ID de la sesión.
Finalizar una sesión
Las sesiones se pueden finalizar de forma manual o automática. El historial de una sesión finalizada está disponible durante 20 días después de la finalización.
Finalizar una sesión automáticamente
Las sesiones finalizan automáticamente al cabo de 24 horas de inactividad o de 7 días, lo que ocurra primero.
Finalizar la sesión actual
Puedes finalizar tu sesión actual con una instrucción SQL o en la consolaGoogle Cloud , si la sesión se ha creado allí.
Consola
En la Google Cloud consola, ve a la página BigQuery.
Busca la pestaña del editor que contenga tu sesión y ciérrala. La sesión se termina.
SQL
Para finalizar la sesión, haz lo siguiente:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CALL BQ.ABORT_SESSION();
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Finalizar una sesión por ID
Puedes finalizar una sesión con su ID. No es necesario que estés en la sesión para finalizarla de esta forma.
Obtén el ID de sesión y, a continuación, ejecuta la siguiente instrucción:
CALL BQ.ABORT_SESSION(SESSION_ID);
Sustituye SESSION_ID por el ID de la sesión que quieras finalizar.
Obtener el ID de tu sesión activa
En algunas situaciones, debes hacer referencia a una sesión para seguir trabajando en ella. Por ejemplo, si trabajas con Cloud Shell, debes incluir el ID de sesión cada vez que ejecutes un comando para esa sesión.
Consola
No es necesario que proporcione el ID de sesión para ejecutar una nueva consulta dentro de una sesión en la consola Google Cloud . Puedes seguir trabajando en la pestaña del editor que contiene la sesión. Sin embargo, si quieres hacer referencia a tu sesión en Cloud Shell o en una llamada a la API, debes conocer el ID de la sesión que has creado en la consola.
Antes de completar estos pasos, asegúrate de haber ejecutado al menos una consulta en una sesión activa.
En la Google Cloud consola, ve a la página BigQuery.
Haz clic en la pestaña del editor que contenga la sesión.
En Resultados de la consulta, haga clic en Información del trabajo.
En la lista Información del trabajo, busca el ID de sesión:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
Para ejecutar comandos de consulta en una sesión de Cloud Shell, debes incluir el ID de sesión en el comando. Puede obtener el ID de sesión cuando cree una sesión o consulte sus sesiones.
Cuando creas una sesión con Cloud Shell, el ID de sesión que se devuelve es similar al siguiente:
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
Para transferir comandos SQL a una sesión con una llamada a la API, debes incluir el ID de sesión en la llamada a la API. Puede obtener el ID de sesión cuando cree una sesión o consulte sus sesiones.
Cuando creas una sesión con una llamada a la API, el ID de sesión de la respuesta tiene un aspecto similar al siguiente:
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Lista de sesiones activas e inactivas
Para obtener los IDs de sesión de las sesiones activas e inactivas, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página BigQuery.
Selecciona el tipo de historial de trabajo:
- Para ver la información de tus trabajos recientes, haz clic en Historial personal.
- Para ver información sobre las tareas recientes de tu proyecto, haz clic en Historial del proyecto.
En la columna ID de sesión, puede ver los IDs de sesión de sus trabajos.
SQL
Para obtener una lista de tus tres sesiones más recientes, incluidas las sesiones activas y las finalizadas, ejecuta la siguiente consulta en la pestaña del editor:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
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;Haz los cambios siguientes:
VIEW
: la vistaINFORMATION_SCHEMA
:JOBS_BY_USER
: devuelve solo los trabajos creados por el usuario actual en el proyecto actualSESSIONS_BY_USER
: devuelve solo las sesiones creadas por el usuario actual en el proyecto actualSESSIONS_BY_PROJECT
: devuelve todas las sesiones del proyecto actual.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
El resultado es similar al siguiente:
+-------------------------------------------------------------------------+ | 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 | +-------------------------------------------------------------------------+
Ver el historial de una sesión
Una sesión registra tus actividades de SQL en un periodo determinado. Esta información se almacena en el historial de la sesión. El historial de sesiones te permite hacer un seguimiento de los cambios que has hecho en la sesión. Si un trabajo falla o se completa correctamente, se registra en el historial de sesiones para que puedas volver más tarde y ver lo que has hecho.
Consola
Para ver el historial de una sesión en la consola, puede filtrar su historial personal o historial del proyecto por ID de sesión para ver todas las consultas SQL ejecutadas en una sesión específica. Google Cloud
En la Google Cloud consola, ve a la página BigQuery.
Despliega la sección Historial de trabajos.
Selecciona el tipo de historial de trabajo que quieras ver:
- Para ver la información de tus tareas recientes, haz clic en Historial personal.
- Para ver información sobre las tareas recientes de tu proyecto, haz clic en Historial del proyecto.
Haz clic en
Filtrar y, a continuación, selecciona ID de sesión.En el campo ID de sesión, busque el ID de sesión:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
Para ver el historial de datos de una sesión específica, primero obtén el ID de la sesión y, después, sigue estos pasos:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
Haz los cambios siguientes:
VIEW: la vista
INFORMATION_SCHEMA
con la que trabajarSelecciona una de las siguientes vistas:
JOBS_BY_USER
: devuelve solo los trabajos creados por el usuario actual en el proyecto actualSESSIONS_BY_USER
: devuelve solo las sesiones creadas por el usuario actual en el proyecto actualSESSIONS_BY_PROJECT
: devuelve todas las sesiones del proyecto actual.
- SESSION_ID: el ID de la sesión de la que se van a recuperar los datos históricos.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Ejemplo
La siguiente consulta devuelve el historial de una sesión que tiene el ID de sesión
CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
. Puedes sustituir este ID de sesión por el tuyo.
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);
El resultado es similar al siguiente:
+---------------------+------------------------------------------------------------------------------------------+
| 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; |
+---------------------+------------------------------------------------------------------------------------------+