创建会话

本文档介绍如何在 BigQuery 中创建会话。它面向熟悉 BigQuery 会话的用户。

创建会话

如果您想要捕获一组 SQL 活动,请创建 BigQuery 会话。创建后,您可以在会话中运行交互式查询,直到会话终止为止。会话中的所有查询都在创建会话的位置运行(处理)。

在完成以下步骤之前,请确保您拥有创建会话所需的权限

控制台

在 Cloud Console 中,每个会话都会分配到一个编辑器标签页。在完成这些步骤之前,请确保已启用编辑器标签页

  1. 在 Cloud Console 中,转到 BigQuery 页面。

    转到 BigQuery

  2. 点击编写新查询。系统随即会打开一个新的编辑器标签页。

  3. 点击更多,然后点击查询设置。此时会打开“查询设置”面板。

  4. 查找处理位置并选择从中运行查询的位置。创建会话后,会话中的所有查询都仅限于此位置,且该位置无法更改。

  5. 会话管理部分中,启用使用会话模式

  6. 点击保存

  7. 在编辑器标签页中编写查询并运行它。系统会在运行这第一个查询后创建新会话。

bq

打开 Cloud Shell 并输入以下 bq query 命令:

bq query \
--nouse_legacy_sql \
--create_session
[--location 'SESSION_LOCATION'] \
'SQL_STATEMENT'

其中:

  • SESSION_LOCATION:将会话绑定到物理位置。将会话中的所有查询限制为此位置。可选。
  • SQL_STATEMENT:会话的第一个 SQL 语句。

测试您的会话

使用以下命令创建会话以及临时表:

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

确保生成类似结果:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

使用已定义的作业资源调用 jobs.insert 方法或 jobs.query 方法。

jobs.insert

使用以下参数调用 jobs.insert 方法:

{
  "jobReference": {
    "projectId": "PROJECT_ID",
    "jobId": "JOB_ID",
    ["location": "SESSION_LOCATION"]
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
       "createSession": {
         "value": true
       }
    }
  }
}

其中:

  • PROJECT_ID:要为其创建会话的项目。
  • JOB_ID:要为其创建会话的作业。
  • SESSION_LOCATION:将会话绑定到物理位置。将会话中的所有查询限制为此位置。可选。
  • SQL_STATEMENT:会话的第一个 SQL 语句。

测试您的会话

输入以下请求正文。将 myProjectjob_123 替换为项目的 ID 和作业的 ID。

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

请确保响应正文如下所示:

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

jobs.query

使用以下参数调用 jobs.query 方法:

{
  "query": "SQL_STATEMENT",
  "createSession": true,
  ["location": "SESSION_LOCATION"]
}

其中:

  • SQL_STATEMENT:会话的第一个 SQL 语句。
  • SESSION_LOCATION:将会话绑定到物理位置。将会话中的所有查询限制为此位置。可选。

测试您的会话

输入以下请求正文。将 myProjectjob_123 替换为项目的 ID 和作业的 ID。

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

请确保响应正文如下所示:

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

后续步骤