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.

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur Saisir une nouvelle requête. Un onglet Éditeur s'affiche.

  3. Cliquez sur Plus > Paramètres de requête. Le panneau Paramètres de requête s'affiche.

  4. Dans la section Gestion des sessions, cliquez sur Utiliser le mode session pour activer le mode session.

  5. 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é.

  6. Cliquez sur Enregistrer.

  7. É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

  1. Dans la console Trusted Cloud , accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Cliquez sur l'onglet de l'éditeur qui contient la session.

  3. 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

  1. Dans la console Trusted Cloud , accédez à la page "BigQuery".

    Accéder à BigQuery

  2. 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 :

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

    CALL BQ.ABORT_SESSION();

  3. 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.

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Cliquez sur l'onglet de l'éditeur qui contient la session.

  3. Dans les résultats de la requête, cliquez sur Informations sur la tâche.

  4. 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

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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.
  3. Dans la colonne ID de session, vous pouvez afficher les ID de session de vos tâches.

    ID de session dans l'historique des 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 :

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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 : vue INFORMATION_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.

  3. 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.

  1. Dans la console Trusted Cloud , accédez à la page "BigQuery".

    Accéder à BigQuery

  2. Développez la section Historique des jobs.

  3. 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.
  4. Cliquez sur Filtrer, puis sélectionnez ID de session.

  5. 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 :

  1. Dans la console Trusted Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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 à utiliser

      Sé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.

  3. 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