Créer des sessions

Ce document explique comment créer des sessions dans BigQuery. Il est destiné aux utilisateurs qui connaissent déjà les sessions BigQuery.

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.

Avant de suivre ces étapes, assurez-vous de disposer des autorisations nécessaires pour créer une session.

Console

Dans la console Google Cloud, chaque session est attribuée à un onglet d'éditeur.

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

Tester votre session

Créez une session avec une table temporaire à l'aide de la commande suivante:

bq query \
  --nouse_legacy_sql \
  --create_session \
  --location 'asia-northeast1' \
  'SELECT 1;'

Assurez-vous que des résultats similaires à ceux-ci sont produits:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

Appelez la méthode jobs.insert ou jobs.query avec une ressource de tâches définie.

jobs.insert

Appelez la méthode jobs.insert avec les paramètres suivants :

{
  "jobReference": {
    "projectId": "PROJECT_ID",
    "jobId": "JOB_ID",
    ["location": "SESSION_LOCATION"]
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
       "createSession": {
         "value": true
       }
    }
  }
}

où :

  • PROJECT_ID: projet pour lequel créer la session.
  • JOB_ID: tâche pour laquelle créer la session.
  • 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.

Tester votre session

Saisissez le corps de requête suivant. Remplacez myProject et job_123 par l'ID d'un projet et l'ID d'une tâche.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "SELECT 1;",
      "createSession": {
          "value": true
      }
    }
  }
}

Assurez-vous que le corps de la réponse est semblable à ceci:

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

jobs.query

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.

Tester votre session

Saisissez le corps de requête suivant. Remplacez myProject et job_123 par l'ID d'un projet et l'ID d'une tâche.

{
  "query": "SELECT 1;",
  "createSession": true
}

Assurez-vous que le corps de la réponse est semblable à ceci:

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

Étape suivante