Trabalhe com sessões
Este documento descreve como criar, usar, terminar e listar as suas sessões.
Antes de concluir estes passos, certifique-se de que tem as autorizações necessárias.
Crie uma sessão
Se quiser captar um grupo das suas atividades de SQL, crie uma sessão do BigQuery. Depois de criar uma sessão, pode executar consultas interativas na sessão até que a sessão termine. Todas as consultas na sessão são executadas (processadas) na localização onde a sessão foi criada.
Consola
Na Google Cloud consola, cada sessão é atribuída a um separador do editor.
Na Google Cloud consola, aceda à página BigQuery.
Clique em
Redigir nova consulta. É aberto um novo separador do editor.Clique em Mais > Definições de consulta. É apresentado o painel Definições da consulta.
Na secção Gestão de sessões, clique em Usar modo de sessão para ativar o modo de sessão.
Em Definições adicionais > Localização dos dados, selecione a localização. Depois de criar a sessão, todas as consultas na sessão ficam restritas a esta localização, e não é possível alterar a localização.
Clique em Guardar.
Escreva uma consulta no separador do editor e execute-a. A nova sessão é criada após a execução desta primeira consulta.
bq
Abra o Cloud Shell
e introduza o seguinte comando
bq query
:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
where:
- SESSION_LOCATION: associe a sessão a uma localização física. Restringir todas as consultas na sessão a esta localização. Opcional.
- SQL_STATEMENT: a primeira declaração SQL para a sua sessão.
O ID da sessão é devolvido 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"] }
where:
- SQL_STATEMENT: a primeira declaração SQL para a sua sessão.
- SESSION_LOCATION: associe a sessão a uma localização física. Restringir todas as consultas na sessão a esta localização. Opcional.
O corpo da resposta é semelhante ao seguinte:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
Execute uma consulta numa sessão
Depois de criar uma sessão, pode executar consultas nessa sessão:
Consola
Na Google Cloud consola, aceda à página do BigQuery.
Clique no separador do editor que contém a sessão.
Adicione a consulta à sessão e clique em Executar.
bq
Abra o Cloud Shell
e introduza o seguinte comando
bq query
:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
where:
- SESSION_ID: substitua este valor pelo ID da sessão com a qual quer trabalhar.
- SQL_STATEMENT: uma declaração SQL a executar na sua sessão.
Os resultados da consulta são seguidos pelo seu ID de sessão.
Se vai executar muitas consultas com o Cloud Shell, pode adicionar o ID da sessão a [query]
em .bigqueryrc
para não ter de copiar e colar o ID da sessão em cada comando.
Este é o aspeto de um ID da sessão no .bigqueryrc
:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Depois de adicionar o ID da sessão a .bigqueryrc
, pode omitir a flag --session_id
do comando bq query
. Se quiser usar uma sessão diferente ou se uma sessão terminar, tem de atualizar o ficheiro .bigqueryrc
.
API
Chame o método jobs.query
com os seguintes parâmetros:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
where:
- SQL_STATEMENT: a primeira declaração SQL para a sua sessão.
- SESSION_ID: o ID da sessão.
Termine uma sessão
Uma sessão pode ser terminada manual ou automaticamente. O histórico de uma sessão terminada está disponível durante 20 dias após a terminação.
Termine automaticamente uma sessão
Uma sessão é terminada automaticamente após 24 horas de inatividade ou após 7 dias, consoante o que ocorrer primeiro.
Termine a sessão atual
Pode terminar a sessão atual com uma declaração SQL ou na Google Cloud consola, se a sessão tiver sido criada aí.
Consola
Na Google Cloud consola, aceda à página do BigQuery.
Encontre o separador do editor que contém a sua sessão e feche-o. A sessão é terminada.
SQL
Faça o seguinte para terminar a sessão:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CALL BQ.ABORT_SESSION();
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Termine uma sessão por ID
Pode terminar uma sessão através do respetivo ID. Não precisa de estar na sessão para a terminar desta forma.
Obtenha o ID da sessão e, em seguida, execute a seguinte declaração:
CALL BQ.ABORT_SESSION(SESSION_ID);
Substitua SESSION_ID pelo ID da sessão a terminar.
Obtenha o ID da sua sessão ativa
Em algumas situações, tem de fazer referência a uma sessão para continuar a trabalhar na mesma. Por exemplo, se estiver a trabalhar com o Cloud Shell, tem de incluir o ID da sessão sempre que executar um comando para essa sessão.
Consola
Não tem de fornecer o ID da sessão para executar uma nova consulta numa sessão na Google Cloud consola. Pode continuar a trabalhar no separador do editor que contém a sessão. No entanto, se quiser fazer referência à sua sessão no Cloud Shell ou numa chamada API, tem de saber o ID da sessão que criou na consola.
Antes de concluir estes passos, certifique-se de que executou, pelo menos, uma consulta numa sessão ativa.
Na Google Cloud consola, aceda à página BigQuery.
Clique no separador do editor que contém a sessão.
Em Resultados da consulta, clique em Informações da tarefa.
Na lista Informações da tarefa, pesquise o ID da sessão:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
Para executar comandos de consulta numa sessão no Cloud Shell, tem de incluir o ID da sessão no comando. Pode obter o ID da sessão quando criar uma sessão ou listar as suas sessões.
Quando cria uma sessão com o Cloud Shell, o ID da sessão devolvido é semelhante ao seguinte:
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
Para transmitir comandos SQL para uma sessão com uma chamada API, tem de incluir o ID da sessão na chamada API. Pode obter o ID da sessão quando criar uma sessão ou listar as suas sessões.
Quando cria uma sessão com uma chamada API, o ID da sessão na resposta é semelhante ao seguinte:
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
Liste sessões ativas e inativas
Para obter os IDs das sessões ativas e inativas, siga estes passos:
Consola
Na Google Cloud consola, aceda à página BigQuery.
Selecione o tipo de histórico de trabalho:
- Para apresentar informações sobre os seus trabalhos recentes, clique em Histórico pessoal.
- Para apresentar informações de tarefas recentes no seu projeto, clique em Histórico do projeto.
Na coluna ID da sessão, pode ver os IDs das sessões dos seus trabalhos.
SQL
Para obter uma lista das três sessões mais recentes, incluindo as sessões ativas e terminadas, execute a seguinte consulta no separador do editor:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaraçã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 o seguinte:
VIEW
: a vistaINFORMATION_SCHEMA
:JOBS_BY_USER
: devolve apenas as tarefas criadas pelo utilizador atual no projeto atualSESSIONS_BY_USER
: devolve apenas as sessões criadas pelo utilizador atual no projeto atualSESSIONS_BY_PROJECT
: devolve todas as sessões no projeto atual
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O resultado é 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 | +-------------------------------------------------------------------------+
Veja o histórico de uma sessão
Uma sessão capta as suas atividades SQL num determinado período. Estas informações são armazenadas no histórico da sessão. O histórico de sessões permite-lhe acompanhar as alterações que fez na sessão. Se uma tarefa falhar ou for bem-sucedida, é registada no histórico de sessões para que possa voltar atrás mais tarde e ver o que fez.
Consola
Para ver o histórico de uma sessão na Google Cloud consola, pode filtrar o seu histórico pessoal ou histórico do projeto por ID da sessão para ver todas as consultas SQL executadas numa sessão específica.
Na Google Cloud consola, aceda à página do BigQuery.
Expanda a secção Histórico de tarefas.
Selecione o tipo de histórico de trabalhos que quer ver:
- Para apresentar informações das suas tarefas recentes, clique em Histórico pessoal.
- Para apresentar informações de tarefas recentes no seu projeto, clique em Histórico do projeto.
Clique em
Filtrar e, de seguida, selecione ID da sessão.No campo ID da sessão, pesquise o ID da sessão:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
Para ver os dados do histórico de uma sessão específica, primeiro obtenha o ID da sessão e, de seguida, siga estes passos:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
Substitua o seguinte:
VIEW: a vista
INFORMATION_SCHEMA
com que trabalharSelecione uma das seguintes vistas:
JOBS_BY_USER
: devolve apenas as tarefas criadas pelo utilizador atual no projeto atualSESSIONS_BY_USER
: devolve apenas as sessões criadas pelo utilizador atual no projeto atualSESSIONS_BY_PROJECT
: devolve todas as sessões no projeto atual
- SESSION_ID: o ID da sessão para a qual pretende obter dados do histórico
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Exemplo
O seguinte devolve o histórico de uma sessão que tem o ID da sessão CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
. Pode substituir este ID da 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 é 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; |
+---------------------+------------------------------------------------------------------------------------------+
O que se segue?
- Consulte a Introdução às sessões.
- Saiba mais sobre como escrever consultas em sessões.