使用工作階段
本文說明如何建立、使用、終止及列出工作階段。
完成這些步驟前,請確認您具備必要權限。
建立工作階段
如要擷取一組 SQL 活動,請建立 BigQuery 工作階段。建立工作階段後,您可以在工作階段中執行互動式查詢,直到工作階段終止為止。工作階段中的所有查詢都會在建立工作階段的位置執行 (處理)。
主控台
在 Trusted Cloud 控制台中,每個工作階段都會指派給一個編輯器分頁。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
按一下「撰寫新查詢」
。系統會開啟新的編輯器分頁。依序點選「更多」>「查詢設定」。系統會顯示「查詢設定」面板。
在「工作階段管理」部分,按一下「使用工作階段模式」,啟用工作階段模式。
在「其他設定」> 資料位置中,選取位置。工作階段建立後,工作階段中的所有查詢都會限制在這個位置,且無法變更位置。
按一下 [儲存]。
在編輯器分頁中編寫查詢 並執行。執行第一次查詢後,系統就會建立新的工作階段。
bq
開啟 Cloud Shell,然後輸入下列 bq query
指令:
bq query \ --nouse_legacy_sql \ --create_session [--location 'SESSION_LOCATION'] \ 'SQL_STATEMENT'
其中:
- SESSION_LOCATION:將課程與實體地點繫結。將工作階段中的所有查詢限制在這個位置。選填。
- SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
查詢結果會一併傳回工作階段 ID。
API
使用下列參數呼叫 jobs.query
方法:
{ "query": "SQL_STATEMENT", "createSession": true, ["location": "SESSION_LOCATION"] }
其中:
- SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
- SESSION_LOCATION:將課程與實體地點繫結。將工作階段中的所有查詢限制在這個位置。選填。
回應主體類似於下列內容:
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
在工作階段中執行查詢
建立工作階段後,您可以在該工作階段中執行查詢:
主控台
前往 Trusted Cloud 控制台的「BigQuery」頁面。
按一下含有工作階段的編輯器分頁。
在工作階段中新增查詢,然後點選「執行」。
bq
開啟 Cloud Shell,然後輸入下列 bq query
指令:
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
其中:
- SESSION_ID:將此值替換為要使用的工作階段 ID。
- SQL_STATEMENT:要在工作階段中執行的 SQL 陳述式。
查詢結果後方會顯示工作階段 ID。
如果您要使用 Cloud Shell 執行大量查詢,可以將工作階段 ID 新增至 .bigqueryrc
中的 [query]
,這樣就不必將工作階段 ID 複製並貼到每個指令中。
.bigqueryrc
中的工作階段 ID 如下所示:
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
將工作階段 ID 新增至 .bigqueryrc
後,即可從 bq query
指令中省略 --session_id
標記。如要使用其他工作階段,或工作階段終止,就必須更新 .bigqueryrc
檔案。
API
使用下列參數呼叫 jobs.query
方法:
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
其中:
- SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
- SESSION_ID:工作階段 ID。
終止工作階段
工作階段可以手動或自動終止。 終止工作階段後,記錄會保留 20 天。
自動終止工作階段
如果閒置 24 小時或 7 天,系統就會自動終止工作階段 (以先到者為準)。
終止目前工作階段
如果工作階段是在Trusted Cloud 控制台中建立,您可以使用 SQL 陳述式或在控制台中終止目前的工作階段。
主控台
前往 Trusted Cloud 控制台的「BigQuery」頁面。
找出含有工作階段的編輯器分頁並關閉。工作階段已終止。
SQL
如要終止工作階段,請執行下列操作:
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CALL BQ.ABORT_SESSION();
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
依 ID 終止工作階段
你可以使用工作階段 ID 終止工作階段。您不必在工作階段中,也能以這種方式終止工作階段。
取得工作階段 ID,然後執行下列陳述式:
CALL BQ.ABORT_SESSION(SESSION_ID);
將 SESSION_ID 替換為要終止的會期 ID。
取得有效工作階段的 ID
在某些情況下,您需要參照工作階段,才能繼續在其中作業。舉例來說,如果您使用 Cloud Shell,每次為該工作階段執行指令時,都必須加入工作階段 ID。
主控台
在 Trusted Cloud 控制台中,您不需要提供工作階段 ID,即可在工作階段內執行新查詢。您只要在含有工作階段的編輯器分頁中繼續工作即可。不過,如要在 Cloud Shell 或 API 呼叫中參照工作階段,您需要知道在控制台中建立的工作階段 ID。
完成這些步驟之前,請確認您已在有效的工作階段中執行至少一項查詢。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
按一下含有工作階段的編輯器分頁。
在「查詢結果」中,按一下「工作資訊」。
在「Job information」(工作資訊) 清單中,搜尋工作階段 ID:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
bq
如要在 Cloud Shell 的工作階段中執行查詢指令,必須在指令中加入工作階段 ID。您可以建立工作階段或列出工作階段,取得工作階段 ID。
使用 Cloud Shell 建立工作階段時,系統傳回的工作階段 ID 類似於下列內容:
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
API
如要透過 API 呼叫將 SQL 指令傳遞至工作階段,您需要在 API 呼叫中加入工作階段 ID。您可以建立工作階段或列出工作階段,取得工作階段 ID。
使用 API 呼叫建立工作階段時,回應中的工作階段 ID 類似於以下內容:
sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
列出有效和無效的工作階段
如要取得有效和無效工作階段的 ID,請按照下列步驟操作:
主控台
前往 Trusted Cloud 控制台的「BigQuery」頁面。
選取工作經歷類型:
- 如要顯示近期工作資訊,請按一下「個人記錄」。
- 如要顯示專案中近期工作資訊,請按一下「專案記錄」。
您可以在「工作階段 ID」欄中查看工作的階段 ID。
SQL
如要取得最近三個工作階段的清單 (包括有效和終止的工作階段),請在編輯器分頁中執行下列查詢:
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
SELECT session_id, MAX(creation_time) AS last_modified_time FROM
region-us
.INFORMATION_SCHEMA.VIEW WHERE session_id IS NOT NULL AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY) GROUP BY session_id ORDER BY last_modified_time DESC;取代下列項目:
VIEW
:INFORMATION_SCHEMA
檢視畫面:JOBS_BY_USER
: 只會傳回目前專案中,由目前使用者建立的工作SESSIONS_BY_USER
:只傳回目前專案中,由目前使用者建立的工作階段SESSIONS_BY_PROJECT
: 傳回目前專案中的所有工作階段
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
結果會類似如下:
+-------------------------------------------------------------------------+ | session_id | last_modified_time | +-------------------------------------------------------------------------+ | CgwKCmZhbGl1LXRlc3QQARokMGQ5YWWYzZmE0YjhkMDBm | 2021-06-01 23:04:26 | | CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZTczwZjA1NDc2 | 2021-05-30 22:43:02 | | CgwKCmZhbGl1LXRlc3QQY2MzLTg4ZDEtYzVhOWZiYmM5NzZk | 2021-04-07 22:31:21 | +-------------------------------------------------------------------------+
查看工作階段記錄
工作階段會擷取您在一段時間內的 SQL 活動。這項資訊會儲存在工作階段記錄中。您可以透過工作階段記錄追蹤工作階段期間所做的變更。工作成功或失敗都會記錄在工作階段記錄中,方便您日後查看所執行的操作。
主控台
如要在 Trusted Cloud 控制台中查看工作階段記錄,可以依工作階段 ID 篩選「個人記錄」或「專案記錄」,查看特定工作階段中執行的所有 SQL 查詢。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
展開「工作記錄」部分。
選取要查看的工作記錄類型:
- 如要顯示近期工作資訊,請按一下「個人記錄」。
- 如要顯示專案中近期工作資訊,請按一下「專案記錄」。
按一下「篩選器」
,然後選取「工作階段 ID」。在「工作階段 ID」欄位中,搜尋工作階段 ID:
Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
SQL
如要查看特定工作階段的歷來資料,請先取得工作階段 ID,然後按照下列步驟操作:
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEW WHERE session_info.session_id = 'SESSION_ID';
取代下列項目:
VIEW:要使用的
INFORMATION_SCHEMA
檢視區塊選取下列其中一個檢視畫面:
JOBS_BY_USER
: 只會傳回目前專案中,由目前使用者建立的作業SESSIONS_BY_USER
:只會傳回目前專案中,由目前使用者建立的工作階段SESSIONS_BY_PROJECT
: 傳回目前專案中的所有工作階段
- SESSION_ID:要擷取歷來資料的工作階段 ID
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
範例
以下範例會傳回工作階段 ID 為 CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0
的工作階段記錄。您可以將這個工作階段 ID 換成自己的 ID。
SELECT creation_time, query FROM region-us.INFORMATION_SCHEMA.JOBS_BY_USER WHERE session_info.session_id = 'CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY);
結果會類似如下:
+---------------------+------------------------------------------------------------------------------------------+
| creation_time | query |
+---------------------+------------------------------------------------------------------------------------------+
| 2021-06-01 23:04:26 | SELECT * FROM Purchases; |
| 2021-06-01 23:02:51 | CREATE TEMP TABLE Purchases(total INT64) AS SELECT * FROM UNNEST([10,23,3,14,55]) AS a; |
+---------------------+------------------------------------------------------------------------------------------+
後續步驟
- 請參閱工作階段簡介。
- 進一步瞭解如何在工作階段中撰寫查詢。