创建会话
本文档介绍如何在 BigQuery 中创建会话。它面向熟悉 BigQuery 会话的用户。
创建会话
如果您想要捕获一组 SQL 活动,请创建 BigQuery 会话。创建会话后,您可以在会话中运行交互式查询,直到会话终止为止。会话中的所有查询都在创建会话的位置运行(处理)。
在完成以下步骤之前,请确保您拥有创建会话所需的权限。
控制台
在 Google Cloud 控制台中,每个会话都会分配给一个编辑器标签页。
在 Google Cloud 控制台中,进入 BigQuery 页面。
点击
编写新查询。系统随即会打开一个新的编辑器标签页。点击更多 >> 查询设置。此时将显示查询设置面板。
在会话管理部分中,点击使用会话模式以启用会话模式。
在其他设置 > 数据位置中,选择位置。创建会话后,会话中的所有查询都仅限于此位置,且该位置无法更改。
点击保存。
在编辑器标签页中编写查询并运行它。系统会在运行这第一个查询后创建新会话。
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 语句。
测试您的会话
输入以下请求正文。将 myProject
和 job_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:将会话绑定到物理位置。将会话中的所有查询限制为此位置。可选。
测试您的会话
输入以下请求正文。将 myProject
和 job_123
替换为项目的 ID 和作业的 ID。
{
"query": "SELECT 1;",
"createSession": true
}
请确保响应正文如下所示:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}