Trabalhar com sessões
Neste documento, descrevemos como criar, usar, encerrar e listar suas sessões.
Antes de concluir essas etapas, verifique se você tem as permissões necessárias.
Criar uma sessão
Se você quiser capturar um grupo das atividades do SQL, crie uma sessão do BigQuery. Após criar uma sessão, será possível executar consultas interativas até que a sessão seja encerrada. Todas as consultas na sessão são executadas (processadas) no local em que a sessão foi criada.
Console
No console Trusted Cloud , cada sessão é atribuída a uma guia do editor.
No console do Trusted Cloud , acesse a página BigQuery.
Clique em
Escrever nova consulta. Uma nova guia Editor será aberta.Clique em Mais > Configurações de consulta. O painel Configurações de consulta é exibido.
Na seção Gerenciamento de sessão, clique em Usar o modo de sessão para ativá-lo.
Em Configurações adicionais > Local dos dados, selecione o local. Depois que uma sessão é criada, todas as consultas nela são restritas a esse local, e o local não pode ser alterado.
Clique em Salvar.
Escreva uma consulta na guia do editor e execute-a. A nova sessão é criada após a execução dessa primeira consulta.
bq
Abra o Cloud Shell
e digite o seguinte comando bq query
:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
em que:
- SESSION_LOCATION: vincule a sessão a um local físico. Restrinja todas as consultas da sessão a esse local. Opcional.
- SQL_STATEMENT: a primeira instrução SQL da sessão.
Seu ID de sessão é retornado com os resultados da consulta.
API
Chame o método jobs.query
com os seguintes parâmetros:
{ "query": "SQL_STATEMENT", "createSession": true, ["location": "SESSION_LOCATION"] }
em que:
- SQL_STATEMENT: a primeira instrução SQL da sessão.
- SESSION_LOCATION: vincule a sessão a um local físico. Restrinja todas as consultas da sessão a esse local. Opcional.
O corpo da resposta é semelhante a:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
Realizar uma consulta em uma sessão
Depois de criar uma sessão, você pode executar consultas nela:
Console
No Trusted Cloud console, acesse a página BigQuery.
Clique na guia do editor que contém a sessão.
Adicione sua consulta à sessão e clique em Executar.
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.
Os resultados da consulta são seguidos pelo ID da sessão.
Se você for executar muitas consultas com o Cloud Shell, adicione o ID da sessão a [query]
em .bigqueryrc
para que não seja necessário 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 a .bigqueryrc
, omita a flag --session_id
do comando bq query
. Se você quiser usar uma
sessão diferente ou se uma sessão
terminar, atualize o arquivo .bigqueryrc
.
API
Chame o método jobs.query
com os seguintes parâmetros:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
em que:
- SQL_STATEMENT: a primeira instrução SQL da sessão.
- SESSION_ID: o ID da sessão.
Encerrar uma sessão
Uma sessão pode ser encerrada de forma manual ou automática. O histórico de uma sessão encerrada fica disponível por 20 dias após o encerramento.
Encerrar uma sessão automaticamente
Uma sessão é encerrada automaticamente após 24 horas de inatividade ou após sete dias, o que ocorrer primeiro.
Encerrar a sessão atual
É possível encerrar a sessão atual com uma instrução SQL ou no console doTrusted Cloud , se a sessão tiver sido criada lá.
Console
No Trusted Cloud console, acesse a página BigQuery.
Encontre e feche a guia do editor que contém sua sessão. A sessão foi encerrada.
SQL
Faça o seguinte para encerrar a sessão:
No console do Trusted Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CALL BQ.ABORT_SESSION();
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
Encerrar uma sessão por ID
Você pode encerrar uma sessão usando o ID dela. Você não precisa estar na sessão para encerrá-la desta forma.
Receba o código da sessão e execute a seguinte instrução:
CALL BQ.ABORT_SESSION(SESSION_ID);
Substitua SESSION_ID pelo ID da sessão a ser encerrada.
Receber o ID da sessão ativa
Em algumas situações, é necessário fazer referência a uma sessão para continuar trabalhando nela. Por exemplo, se você estiver trabalhando com o Cloud Shell, será necessário incluir o código da sessão sempre que executar um comando para essa sessão.
Console
Não é necessário fornecer o ID da sessão para executar uma nova consulta dentro de uma sessão no console Trusted Cloud . Continue trabalhando na guia do editor que contém a sessão. No entanto, se quiser fazer referência à sessão no Cloud Shell ou a uma chamada de API, você precisa saber o ID da sessão criada no console.
Antes de concluir estas etapas, verifique se você executou pelo menos uma consulta em uma sessão ativa.
No console do Trusted Cloud , acesse a página BigQuery.
Clique na guia do editor que contém a sessão.
Nos resultados da consulta, clique em Informações do job.
Na lista Informações do job, procure o ID da sessão:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
Para executar comandos de consulta em uma sessão dentro do Cloud Shell, é necessário incluir o código da sessão no comando. Você pode conseguir o ID da sessão ao criar uma sessão ou listar suas sessões.
Quando você cria uma sessão com o Cloud Shell, o ID da sessão retornado é semelhante a este:
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
Para passar comandos SQL em uma sessão com uma chamada de API, você precisa incluir o ID da sessão na chamada de API. Você pode conseguir o ID da sessão ao criar uma sessão ou listar suas sessões.
Quando você cria uma sessão com uma chamada de API, o ID da sessão na resposta é semelhante a este:
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Listar sessões ativas e inativas
Para ver os IDs de sessões ativas e inativas, siga estas etapas:
Console
No console do Trusted Cloud , acesse a página BigQuery.
Selecione o tipo de histórico de jobs:
- Para exibir informações dos jobs recentes, clique em Histórico pessoal.
- Para exibir informações de jobs recentes no projeto, clique em Histórico do projeto.
Na coluna ID da sessão, é possível conferir os IDs de sessão dos seus jobs.
SQL
Para ver uma lista das suas três sessões mais recentes, incluindo as sessões ativas e encerradas, execute a seguinte consulta na guia do editor:
No console do Trusted Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
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;Substitua:
VIEW
: a visualizaçãoINFORMATION_SCHEMA
:JOBS_BY_USER
: retorna apenas os jobs criados pelo usuário atual no projeto atualSESSIONS_BY_USER
: retorna apenas as sessões criadas pelo usuário atual no projeto atualSESSIONS_BY_PROJECT
: retorna todas as sessões no projeto atual
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
O resultado será semelhante ao seguinte:
+-------------------------------------------------------------------------+ | 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 | +-------------------------------------------------------------------------+
Ver o histórico de uma sessão
Uma sessão captura suas atividades SQL dentro de um período. Essas informações são armazenadas no histórico da sessão. O histórico de sessões permite acompanhar as alterações feitas na sessão. Se um job falhar ou ser bem-sucedido, ele será registrado no histórico da sessão para que você possa voltar mais tarde e ver o que fez.
Console
Para conferir o histórico de uma sessão no console do Trusted Cloud , filtre seu Histórico pessoal ou Histórico do projeto por ID da sessão para ver todas As consultas SQL são executadas em uma sessão específica.
No Trusted Cloud console, acesse a página BigQuery.
Abra a seção Histórico de jobs.
Selecione o tipo de histórico de jobs que você quer ver:
- Para exibir informações dos jobs recentes, clique em Histórico pessoal.
- Para exibir informações de jobs recentes no projeto, clique em Histórico do projeto.
Clique em
Filtrar e selecione ID da sessão.No campo ID da sessão, procure o ID da sessão:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
Para ver os dados históricos de uma sessão específica, primeiro acesse o ID da sessão e, depois, siga estas etapas:
No console do Trusted Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
Substitua:
VIEW: a visualização
INFORMATION_SCHEMA
para trabalharSelecione uma das seguintes visualizações:
JOBS_BY_USER
retorna apenas as sessões criadas pelo usuário atual no projeto atual.SESSIONS_BY_USER
: retorna apenas as sessões criadas pelo usuário atual no projeto atual.SESSIONS_BY_PROJECT
: retorna todas as sessões no projeto atual.
- SESSION_ID: o ID da sessão para a qual dados históricos serão recuperados.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
Exemplo
O exemplo a seguir retorna o histórico de uma sessão que tem o ID CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
. É possível substituir esse ID de sessão
pelo seu.
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);
O resultado será semelhante ao seguinte:
+---------------------+------------------------------------------------------------------------------------------+
| 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; |
+---------------------+------------------------------------------------------------------------------------------+
A seguir
- Consulte a Introdução às sessões.
- Saiba mais sobre como criar consultas em sessões.