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

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

Console

No Console do Google Cloud, cada sessão é atribuída a uma guia do editor.

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

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

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

em que:

  • 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"]
}

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.

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