在工作階段中執行查詢
本文件說明如何在 BigQuery 工作階段中執行查詢。本文件適用於已對工作階段有基本瞭解,且已建立工作階段,並知道要使用的工作階段 ID的使用者。
完成這些步驟前,請確認您具備建立工作階段的必要權限。
在工作階段中執行查詢
建立工作階段後,您可以將查詢新增至工作階段並執行。您可以透過下列幾種方式進行:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
按一下含有工作階段的編輯器分頁。
將查詢新增至工作階段,然後點選「執行」。
測試工作階段
在 Google Cloud 控制台中,開啟含有您建立的會話的編輯器分頁,然後執行以下 SQL 陳述式:
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
刪除或註解分頁中的內容,然後執行以下 SQL 陳述式:
SELECT * FROM Temperature;
確認產生的結果類似下列內容:
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
bq
開啟 Cloud Shell,然後輸入下列 bq query
指令:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
其中:
- SESSION_ID:將此值替換為您要使用的工作階段 ID。
- SQL_STATEMENT:在工作階段中執行的 SQL 陳述式。
測試工作階段
在您建立的會話中建立名為 Temperature
的臨時資料表。請將工作階段 ID 替換為您自己的 ID。
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;'
取得 Temperature
資料表中的所有值清單。請將工作階段 ID 替換為您自己的 ID。
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
確認產生的結果類似下列內容:
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
將工作階段新增至 .bigqueryrc
,節省時間
如果您打算使用 Cloud Shell 執行大量查詢,可以將工作階段 ID 新增至 .bigqueryrc
中的 [query]
,這樣就不必將工作階段 ID 複製並貼到每個指令中。
.bigqueryrc
中的會話 ID 如下所示:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
將工作階段 ID 新增至 .bigqueryrc
後,您可以改用以下指令:
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
請注意,如果您想使用其他工作階段,或是工作階段終止,就必須更新 .bigqueryrc
。
API
使用已定義的工作資源呼叫 jobs.insert 方法或 jobs.query 方法。
jobs.insert
使用下列參數呼叫 jobs.insert
方法:
{ "jobReference": { "projectId": "PROJECT_ID", "jobId": "JOB_ID" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
其中:
- PROJECT_ID:要建立工作階段的專案。
- JOB_ID:要建立工作階段的工作。
- SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
- SESSION_ID:工作階段 ID。
測試工作階段
輸入下列要求主體,即可在您建立的會話中建立名為 Temperature
的暫存資料表。請將專案 ID、工作 ID 和工作階段 ID 替換為您自己的 ID。
{
"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"
}]
}
}
}
輸入以下要求內容,即可取得工作階段中 Temperature
資料表的所有值清單。請將專案 ID、工作 ID 和工作階段 ID 改為您自己的值。
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
請確認這兩個要求的回應主體類似下列內容:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
jobs.query
使用下列參數呼叫 jobs.query
方法:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
其中:
- SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
- SESSION_ID:工作階段 ID。
測試工作階段
輸入下列要求主體,即可在您建立的會話中建立名為 Temperature
的暫存資料表。請將專案 ID、工作 ID 和工作階段 ID 替換為您自己的 ID。
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
輸入以下要求內容,即可取得工作階段中 Temperature
資料表的所有值清單。請將專案 ID、工作 ID 和工作階段 ID 改為您自己的值。
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
請確認這兩個要求的回應主體類似下列內容:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}