Como executar consultas em sessões

Neste documento, você verá como executar consultas em uma sessão do BigQuery. Ela é destinada a usuários que já têm uma compreensão geral das sessões, já criaram uma sessão e conhecem o código. para a sessão que eles querem usar.

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

Executar uma consulta em uma sessão

Depois de criar uma sessão, é possível adicionar uma consulta à sessão e executá-la. Há algumas maneiras de fazer isso:

Console

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

    Ir para o BigQuery

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

  3. Adicione sua consulta à sessão e clique em Executar.

Teste a sessão

No console do Google Cloud, abra uma guia do editor que contenha uma sessão criada e execute esta instrução SQL:

CREATE TEMP TABLE Temperature(degrees INT64)  AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;

Exclua ou comente o conteúdo na guia e execute esta instrução SQL:

SELECT * FROM Temperature;

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

+---------+
| degrees |
+---------+
|      55 |
|      14 |
|       3 |
|       0 |
|      30 |
+---------+

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.

Teste a sessão

Crie uma tabela temporária chamada Temperature em uma sessão que você criou. Substitua o ID da sessão pelo seu.

bq query \
  --nouse_legacy_sql \
  --session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
  'CREATE TEMP TABLE Temperature(degrees INT64)  AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;'

Receba uma lista de todos os valores na tabela Temperature. Substitua o código da sessão pelo seu.

bq query \
  --nouse_legacy_sql \
  --session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
  'SELECT * FROM Temperature;'

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

+-------+
| total |
+-------+
|    30 |
|     0 |
|     3 |
|    14 |
|    55 |
+-------+

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

Adicione sua sessão a .bigqueryrc e economize tempo

Se você for executar muitas consultas com o Cloud Shell, adicione o ID da sessão a [query] em .bigqueryrc para que você possa fazer isso não precisa 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 à .bigqueryrc, use este comando:

bq query \
  --nouse_legacy_sql \
  'SELECT * FROM Temperature;'

Esteja ciente de que, se você quiser usar uma sessão diferente ou se uma sessão terminar, atualize .bigqueryrc.

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"
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
      "connectionProperties": [{
        "key": "session_id",
        "value": "SESSION_ID"
      }]
    }
  }
}

onde:

  • PROJECT_ID: o projeto em que a sessão será criada;
  • JOB_ID: o job para o qual criar a sessão.
  • SQL_STATEMENT: a primeira instrução SQL da sessão.
  • SESSION_ID: o ID da sessão.

Teste a sessão

Digite o corpo da solicitação a seguir para criar uma tabela temporária chamada Temperature em uma sessão que você criou. Substitua os IDs do projeto, do job e da sessão pelos seus.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
      "connectionProperties": [{
        "key": "session_id",
        "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
      }]
    }
  }
}

Insira o corpo da solicitação a seguir para receber uma lista de todos os valores na tabela Temperature em uma sessão. Substitua o ID do projeto, o ID do job e o ID da sessão pelos seus.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "SELECT * FROM Temperature;",
      "connectionProperties": [{
        "key": "session_id",
        "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
      }]
    }
  }
}

Verifique se o corpo da resposta para as duas solicitações é 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",
  "connectionProperties": [{
    "key": "session_id",
    "value": "SESSION_ID"
  }]
}

onde:

  • SQL_STATEMENT: a primeira instrução SQL da sessão.
  • SESSION_ID: o ID da sessão.

Teste a sessão

Digite o corpo da solicitação a seguir para criar uma tabela temporária chamada Temperature em uma sessão que você criou. Substitua os IDs do projeto, do job e da sessão pelos seus.

{
  "query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
  "connectionProperties": [{
    "key": "session_id",
    "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
  }]
}

Insira o corpo da solicitação a seguir para receber uma lista de todos os valores na tabela Temperature em uma sessão. Substitua o ID do projeto, o ID do job e o ID da sessão pelos seus.

{
  "query": "SELECT * FROM Temperature;",
  "connectionProperties": [{
    "key": "session_id",
    "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
  }]
}

Verifique se o corpo da resposta para as duas solicitações é semelhante a este:

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

A seguir