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.

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. Clique em Escrever nova consulta. Uma nova guia Editor será aberta.

  3. Clique em Mais > Configurações de consulta. O painel Configurações de consulta é exibido.

  4. Na seção Gerenciamento de sessão, clique em Usar o modo de sessão para ativá-lo.

  5. 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.

  6. Clique em Salvar.

  7. 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

  1. No Trusted Cloud console, acesse a página BigQuery.

    Acessar o BigQuery

  2. Clique na guia do editor que contém a sessão.

  3. 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

  1. No Trusted Cloud console, acesse a página BigQuery.

    Acessar o BigQuery

  2. 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:

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CALL BQ.ABORT_SESSION();

  3. 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.

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. Clique na guia do editor que contém a sessão.

  3. Nos resultados da consulta, clique em Informações do job.

  4. 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

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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.
  3. Na coluna ID da sessão, é possível conferir os IDs de sessão dos seus jobs.

    ID da sessão no histórico do job

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:

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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ção INFORMATION_SCHEMA:
      • JOBS_BY_USER: retorna apenas os jobs criados 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

  3. 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.

  1. No Trusted Cloud console, acesse a página BigQuery.

    Acessar o BigQuery

  2. Abra a seção Histórico de jobs.

  3. 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.
  4. Clique em Filtrar e selecione ID da sessão.

  5. 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:

  1. No console do Trusted Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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 trabalhar

      Selecione 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.

  3. 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