Como executar consultas em sessões
Neste documento, você verá como executar consultas em uma sessão do BigQuery. Ela é destinada a usuários que já têm uma compreensão geral das sessões, já criaram uma sessão e conhecem o código. para a sessão que eles querem usar.
Antes de concluir estas etapas, verifique se você tem as permissões necessárias para criar uma sessão.
Executar uma consulta em uma sessão
Depois de criar uma sessão, é possível adicionar uma consulta à sessão e executá-la. Há algumas maneiras de fazer isso:
Console
No Console do Google Cloud, acesse a página do BigQuery.
Clique na guia do editor que contém a sessão.
Adicione sua consulta à sessão e clique em Executar.
Teste a sessão
No console do Google Cloud, abra uma guia do editor que contenha uma sessão criada e execute esta instrução SQL:
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
Exclua ou comente o conteúdo na guia e execute esta instrução SQL:
SELECT * FROM Temperature;
Certifique-se de que resultados semelhantes a estes sejam produzidos:
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
bq
Abra o Cloud Shell
e digite o seguinte comando bq query
:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
onde:
- SESSION_ID: substitua pelo ID da sessão com que você quer trabalhar.
- SQL_STATEMENT: uma instrução SQL a ser executada na sessão.
Teste a sessão
Crie uma tabela temporária chamada Temperature
em uma sessão que você criou. Substitua o ID da sessão pelo seu.
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;'
Receba uma lista de todos os valores na tabela Temperature
. Substitua o código da sessão pelo seu.
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
Certifique-se de que resultados semelhantes a estes sejam produzidos:
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Adicione sua sessão a .bigqueryrc
e economize tempo
Se você for executar muitas consultas com o Cloud Shell, adicione o ID da sessão a [query]
em .bigqueryrc
para que você possa fazer isso não precisa copiar e colar o ID da sessão em cada comando.
Esta é uma aparência de ID de sessão em .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Depois de adicionar o ID da sessão à .bigqueryrc
, use este comando:
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
Esteja ciente de que, se você quiser usar uma sessão diferente ou se uma sessão terminar, atualize .bigqueryrc
.
API
Chame o método jobs.insert ou jobs.query com um recurso de jobs definido.
jobs.insert
Chame o método jobs.insert
com os seguintes parâmetros:
{ "jobReference": { "projectId": "PROJECT_ID", "jobId": "JOB_ID" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
onde:
- PROJECT_ID: o projeto em que a sessão será criada;
- JOB_ID: o job para o qual criar a sessão.
- SQL_STATEMENT: a primeira instrução SQL da sessão.
- SESSION_ID: o ID da sessão.
Teste a sessão
Digite o corpo da solicitação a seguir para criar uma tabela temporária chamada Temperature
em uma sessão que você criou.
Substitua os IDs do projeto, do job e da sessão pelos seus.
{
"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"
}]
}
}
}
Insira o corpo da solicitação a seguir para receber uma lista de todos os valores na tabela Temperature
em uma sessão. Substitua o ID do projeto, o ID do job e o ID da sessão pelos seus.
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
Verifique se o corpo da resposta para as duas solicitações é semelhante a este:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
jobs.query
Chame o método jobs.query
com os seguintes parâmetros:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
onde:
- SQL_STATEMENT: a primeira instrução SQL da sessão.
- SESSION_ID: o ID da sessão.
Teste a sessão
Digite o corpo da solicitação a seguir para criar uma tabela temporária chamada Temperature
em uma sessão que você criou.
Substitua os IDs do projeto, do job e da sessão pelos seus.
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Insira o corpo da solicitação a seguir para receber uma lista de todos os valores na tabela Temperature
em uma sessão. Substitua o ID do projeto, o ID do job e o ID da sessão pelos seus.
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
Verifique se o corpo da resposta para as duas solicitações é semelhante a este:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}