Criar sessões

Neste documento, descrevemos como criar sessões no BigQuery. Ele é destinado a usuários familiarizados com as sessões do BigQuery.

Criar uma sessão

Se você quiser capturar um grupo das atividades do SQL, crie uma sessão do BigQuery. Depois de criadas, você pode executar consultas interativas na sua sessão até que ela seja encerrada. Todas as consultas na sessão são executadas (processadas) no local em que a sessão foi criada.

Antes de concluir essas etapas, verifique se você tem as permissões necessárias para criar uma sessão.

Console

No Console do Cloud, cada sessão é atribuída a uma guia do editor. Antes de concluir estas etapas, verifique se as guias do editor estão ativadas.

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

    Ir para o BigQuery

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

  3. Clique em Mais e em Configurações de consulta. O painel Configurações de consulta é aberto.

  4. Procure Local de processamento e selecione o local em que as consultas serão executadas. Depois que uma sessão é criada, todas as consultas nela são restritas a esse local, e o local não pode ser alterado.

  5. Na seção Gerenciamento de sessões, ative Usar modo de sessão.

  6. Clique em Save.

  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'

onde:

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

Teste a sessão

Crie uma sessão com uma tabela temporária com este comando:

bq query \
  --nouse_legacy_sql \
  --create_session \
  --location 'asia-northeast1' \
  'SELECT 1;'

Certifique-se de que resultados semelhantes a estes sejam produzidos:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

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",
    ["location": "SESSION_LOCATION"]
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
       "createSession": {
         "value": true
       }
    }
  }
}

onde:

  • PROJECT_ID: o projeto em que a sessão será criada;
  • JOB_ID: o job para o qual criar a sessão.
  • 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.

Teste a sessão

Insira o corpo da solicitação a seguir. Substitua myProject e job_123 pelo ID de um projeto e pelo ID de um job.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "SELECT 1;",
      "createSession": {
          "value": true
      }
    }
  }
}

Verifique se o corpo da resposta é 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",
  "createSession": true,
  ["location": "SESSION_LOCATION"]
}

onde:

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

Teste a sessão

Insira o corpo da solicitação a seguir. Substitua myProject e job_123 pelo ID de um projeto e pelo ID de um job.

{
  "query": "SELECT 1;",
  "createSession": true
}

Verifique se o corpo da resposta é semelhante a este:

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "statistics": {
    "sessionInfo": {
      "sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
    }
  }
}

A seguir