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.

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. Clique em Redigir nova consulta. É aberto um novo separador do editor.

  3. Clique em Mais > Definições de consulta. É apresentado o painel Definições da consulta.

  4. Na secção Gestão de sessões, clique em Usar modo de sessão para ativar o modo de sessão.

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

  6. Clique em Guardar.

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

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Clique no separador do editor que contém a sessão.

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

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

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

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    CALL BQ.ABORT_SESSION();

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

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. Clique no separador do editor que contém a sessão.

  3. Em Resultados da consulta, clique em Informações da tarefa.

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

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. 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.
  3. Na coluna ID da sessão, pode ver os IDs das sessões dos seus trabalhos.

    ID da sessão no histórico de tarefas

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:

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. 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 vista INFORMATION_SCHEMA:
      • JOBS_BY_USER: devolve apenas as tarefas criadas pelo utilizador atual no projeto atual
      • SESSIONS_BY_USER: devolve apenas as sessões criadas pelo utilizador atual no projeto atual
      • SESSIONS_BY_PROJECT: devolve todas as sessões no projeto atual

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

  1. Na Google Cloud consola, aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Expanda a secção Histórico de tarefas.

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

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

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

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

      Selecione uma das seguintes vistas:

      • JOBS_BY_USER: devolve apenas as tarefas criadas pelo utilizador atual no projeto atual
      • SESSIONS_BY_USER: devolve apenas as sessões criadas pelo utilizador atual no projeto atual
      • SESSIONS_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

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