Exécuter des requêtes dans des sessions
Ce document explique comment exécuter des requêtes dans une session BigQuery. Il est destiné aux utilisateurs qui ont déjà une compréhension générale des sessions, qui ont déjà créé une session et qui en connaissent l'ID de la session qu'ils souhaitent utiliser.
Avant de suivre ces étapes, assurez-vous de disposer des autorisations nécessaires pour créer une session.
Exécuter une requête dans une session
Après avoir créé une session, vous pouvez ajouter une requête à la session et l'exécuter. Vous pouvez procéder de plusieurs manières:
Console
Dans la console Google 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).
Tester votre session
Dans la console Google Cloud, ouvrez un onglet d'éditeur contenant une session que vous avez créée, puis exécutez cette instruction SQL :
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
Supprimez ou mettez en commentaire le contenu de l'onglet et exécutez cette instruction SQL :
SELECT * FROM Temperature;
Assurez-vous que des résultats similaires à ceux-ci sont produits:
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
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.
Tester votre session
Créez une table temporaire appelée Temperature
dans une session que vous avez créée. Remplacez l'ID de session par le vôtre.
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;'
Obtenez une liste de toutes les valeurs de la table Temperature
. Remplacez l'ID de session par le vôtre.
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
Assurez-vous que des résultats similaires à ceux-ci sont produits:
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Gagnez du temps en ajoutant votre session sur .bigqueryrc
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 utiliser la commande suivante:
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
Sachez que si vous souhaitez utiliser une autre session ou si la session se termine, vous devez mettre à jour .bigqueryrc
.
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" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
où :
- PROJECT_ID: projet pour lequel créer la session.
- JOB_ID: tâche pour laquelle créer la session.
- SQL_STATEMENT: première instruction SQL de votre session.
- SESSION_ID: ID de la session.
Tester votre session
Saisissez le corps de requête suivant pour créer une table temporaire appelée Temperature
dans une session que vous avez créée.
Remplacez l'ID du projet, l'ID de la tâche et l'ID de session par vos propres identifiants.
{
"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"
}]
}
}
}
Saisissez le corps de requête suivant pour obtenir la liste de toutes les valeurs de la table Temperature
d'une session. Remplacez l'ID du projet, l'ID de la tâche et l'ID de la session par vos propres identifiants.
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
Assurez-vous que le corps de la réponse pour les deux requêtes est semblable à celui-ci:
{
"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", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
où :
- SQL_STATEMENT: première instruction SQL de votre session.
- SESSION_ID: ID de la session.
Tester votre session
Saisissez le corps de requête suivant pour créer une table temporaire appelée Temperature
dans une session que vous avez créée.
Remplacez l'ID du projet, l'ID de la tâche et l'ID de session par vos propres identifiants.
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Saisissez le corps de requête suivant pour obtenir la liste de toutes les valeurs de la table Temperature
d'une session. Remplacez l'ID du projet, l'ID de la tâche et l'ID de la session par vos propres identifiants.
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Assurez-vous que le corps de la réponse pour les deux requêtes est semblable à celui-ci:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}