Utiliser des sessions
Ce document explique comment créer, utiliser, arrêter et lister vos sessions.
Avant de suivre ces étapes, assurez-vous de disposer des autorisations nécessaires.
Créer une session
Si vous souhaitez capturer un groupe de vos activités SQL, créez une session BigQuery. Une fois la session créée, vous pouvez exécuter des requêtes interactives dans votre session jusqu'à son arrêt. Toutes les requêtes de la session sont exécutées (traitées) à l'emplacement où la session a été créée.
Console
Dans la console Trusted Cloud , chaque session est attribuée à un onglet d'éditeur.
Dans la console Trusted Cloud , accédez à la page BigQuery.
Cliquez sur
Saisir une nouvelle requête. Un onglet Éditeur s'affiche.Cliquez sur Plus > Paramètres de requête. Le panneau Paramètres de requête s'affiche.
Dans la section Gestion des sessions, cliquez sur Utiliser le mode session pour activer le mode session.
Dans Paramètres supplémentaires > Emplacement des données, sélectionnez l'emplacement. Une fois une session créée, toutes les requêtes de la session sont limitées à cet emplacement et l'emplacement ne peut pas être modifié.
Cliquez sur Enregistrer.
Écrivez une requête dans l'onglet de l'éditeur et exécutez-la. La nouvelle session est créée après l'exécution de cette première requête.
bq
Ouvrez Cloud Shell, puis saisissez la commande bq query
suivante:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
où :
- SESSION_LOCATION: lie la session à un emplacement physique. Limitez toutes les requêtes de la session à cet emplacement. Facultatif.
- SQL_STATEMENT: première instruction SQL de votre session.
Votre ID de session est renvoyé avec les résultats de la requête.
API
Appelez la méthode jobs.query
avec les paramètres suivants :
{ "query": "SQL_STATEMENT", "createSession": true, ["location": "SESSION_LOCATION"] }
où :
- SQL_STATEMENT: première instruction SQL de votre session.
- SESSION_LOCATION: lie la session à un emplacement physique. Limitez toutes les requêtes de la session à cet emplacement. Facultatif.
Le corps de la réponse est semblable à ceci :
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
Exécuter une requête dans une session
Une fois la session créée, vous pouvez y exécuter des requêtes :
Console
Dans la console Trusted Cloud , accédez à la page "BigQuery".
Cliquez sur l'onglet de l'éditeur qui contient la session.
Ajoutez votre requête à la session, puis cliquez sur Run (Exécuter).
bq
Ouvrez Cloud Shell, puis saisissez la commande bq query
suivante:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
où :
- SESSION_ID: remplacez cette valeur par l'ID de la session que vous souhaitez utiliser.
- SQL_STATEMENT: instruction SQL à exécuter dans votre session.
Les résultats de la requête sont suivis de votre ID de session.
Si vous allez exécuter de nombreuses requêtes avec Cloud Shell, vous pouvez ajouter l'ID de votre session à [query]
dans .bigqueryrc
Il n'est pas nécessaire de copier et de coller l'ID de session dans chaque commande.
Voici à quoi ressemble un ID de session dans .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Après avoir ajouté l'ID de session à .bigqueryrc
, vous pouvez omettre l'indicateur --session_id
de la commande bq query
. Si vous souhaitez utiliser une autre session ou si la session se termine, vous devez mettre à jour votre fichier .bigqueryrc
.
API
Appelez la méthode jobs.query
avec les paramètres suivants :
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
où :
- SQL_STATEMENT: première instruction SQL de votre session.
- SESSION_ID: ID de la session.
Arrêter une session
Une session peut être terminée manuellement ou automatiquement. L'historique d'une session terminée est disponible pendant 20 jours après la fin de la cession.
Arrêter automatiquement une session
Une session se termine automatiquement après 24 heures d'inactivité ou après sept jours, selon la première limite atteinte.
Terminer la session en cours
Vous pouvez mettre fin à votre session actuelle à l'aide d'une instruction SQL ou dans la consoleTrusted Cloud si la session y a été créée.
Console
Dans la console Trusted Cloud , accédez à la page "BigQuery".
Recherchez l'onglet de l'éditeur contenant votre session, puis fermez-la. La session est terminée.
SQL
Pour mettre fin à votre session, procédez comme suit :
Dans la console Trusted Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
CALL BQ.ABORT_SESSION();
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Terminer une session par ID
Vous pouvez terminer une session en utilisant son ID. Vous n'avez pas besoin d'être dans la session pour y mettre fin de cette manière.
Récupérez l'ID de session, puis exécutez l'instruction suivante :
CALL BQ.ABORT_SESSION(SESSION_ID);
Remplacez SESSION_ID par l'ID de la session à fermer.
Obtenir l'ID de votre session en cours
Dans certains cas, vous devez faire référence à une session pour continuer à travailler au sein de celle-ci. Par exemple, si vous travaillez avec Cloud Shell, vous devez inclure l'ID de session chaque fois que vous exécutez une commande pour cette session.
Console
Vous n'avez pas besoin de fournir l'ID de session pour exécuter une nouvelle requête dans une session de la console Trusted Cloud . Vous pouvez simplement continuer à travailler dans l'onglet de l'éditeur qui contient la session. Toutefois, si vous souhaitez référencer votre session dans Cloud Shell ou un appel d'API, vous devez connaître l'ID de la session que vous avez créée dans la console.
Avant de suivre ces étapes, assurez-vous que vous avez exécuté au moins une requête dans une session active.
Dans la console Trusted Cloud , accédez à la page BigQuery.
Cliquez sur l'onglet de l'éditeur qui contient la session.
Dans les résultats de la requête, cliquez sur Informations sur la tâche.
Dans la liste Informations sur la tâche, recherchez l'ID de session :
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
Pour exécuter des commandes de requête dans une session Cloud Shell, vous devez inclure l'ID de session dans la commande. Vous pouvez obtenir l'ID de session lorsque vous créez une session ou en listant vos sessions.
Lorsque vous créez une session avec Cloud Shell, l'ID de session renvoyé est semblable à ceci :
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
Pour transmettre des commandes SQL dans une session avec un appel d'API, vous devez inclure l'ID de session dans l'appel d'API. Vous pouvez obtenir l'ID de session lorsque vous créez une session ou en listant vos sessions.
Lorsque vous créez une session avec un appel d'API, l'ID de session dans la réponse se présente comme suit :
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Lister les sessions actives et inactives
Pour obtenir les ID de session des sessions actives et inactives, procédez comme suit :
Console
Dans la console Trusted Cloud , accédez à la page BigQuery.
Sélectionnez le type d'historique des tâches :
- Pour afficher des informations sur vos tâches récentes, cliquez sur Historique personnel.
- Pour afficher les informations sur les tâches récentes de votre projet, cliquez sur Historique du projet.
Dans la colonne ID de session, vous pouvez afficher les ID de session de vos tâches.
SQL
Pour obtenir la liste des trois sessions les plus récentes, y compris les sessions actives et terminées, exécutez la requête suivante dans l'onglet de l'éditeur :
Dans la console Trusted Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
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;Remplacez les éléments suivants :
VIEW
: vueINFORMATION_SCHEMA
:JOBS_BY_USER
: ne renvoie que les tâches créées par l'utilisateur actuel dans le projet en cours.SESSIONS_BY_USER
: ne renvoie que les sessions créées par l'utilisateur actuel dans le projet en cours.SESSIONS_BY_PROJECT
: renvoie toutes les sessions du projet en cours.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Le résultat ressemble à ce qui suit :
+-------------------------------------------------------------------------+ | 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 | +-------------------------------------------------------------------------+
Afficher l'historique d'une session
Une session capture vos activités SQL dans un délai donné. Ces informations sont stockées dans l'historique de la session. L'historique de la session vous permet de suivre les modifications que vous avez apportées au cours de la session. Si une tâche échoue ou réussit, elle est enregistrée dans l'historique de la session afin que vous puissiez revenir ultérieurement pour voir ce que vous avez fait.
Console
Pour afficher l'historique d'une session dans la console Trusted Cloud , vous pouvez filtrer votre historique personnel ou votre historique de projet par ID de session pour afficher toutes les requêtes SQL exécutées lors d'une session spécifique.
Dans la console Trusted Cloud , accédez à la page "BigQuery".
Développez la section Historique des jobs.
Sélectionnez le type d'historique des tâches à afficher :
- Pour afficher des informations sur vos tâches récentes, cliquez sur Historique personnel.
- Pour afficher les informations sur les tâches récentes de votre projet, cliquez sur Historique du projet.
Cliquez sur
Filtrer, puis sélectionnez ID de session.Dans le champ ID de session, recherchez l'ID de session :
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
Pour afficher les données historiques d'une session spécifique, commencez par obtenir votre ID de session, puis procédez comme suit :
Dans la console Trusted Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
Remplacez les éléments suivants :
VIEW : vue
INFORMATION_SCHEMA
à utiliserSélectionnez l'une des vues suivantes :
JOBS_BY_USER
: ne renvoie que les sessions créées par l'utilisateur actuel dans le projet en cours.SESSIONS_BY_USER
: ne renvoie que les sessions créées par l'utilisateur actuel dans le projet en cours.SESSIONS_BY_PROJECT
: renvoie toutes les sessions du projet en cours.
- SESSION_ID : ID de la session pour laquelle vous souhaitez récupérer des données de l'historique.
Cliquez sur
Exécuter.
Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.
Exemple
La requête suivante renvoie l'historique d'une session correspondant à l'ID CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
. Vous pouvez remplacer cet ID de session par le vôtre.
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);
Le résultat ressemble à ce qui suit :
+---------------------+------------------------------------------------------------------------------------------+
| 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; |
+---------------------+------------------------------------------------------------------------------------------+
Étapes suivantes
- Consultez la présentation des sessions.
- En savoir plus sur l'écriture de requêtes dans des sessions