使用保留項目指派作業
BigQuery Reservation API 可讓您購買專用運算單元 (稱為承諾)、建立運算單元資源池 (稱為預留項目),以及將專案、資料夾和機構指派給這些預留項目。
建立保留項目指派作業
如要使用購買的運算單元,您必須建立指派作業,將專案、資料夾或機構指派給運算單元保留項目。
專案會使用指派給該專案的資源階層中最具體的單一預留項目。資料夾指派會覆寫機構指派,而專案指派會覆寫資料夾指派。資料夾和機構指派功能不適用於標準版保留項目。
如要為預訂建立指派,該預訂必須符合下列至少一項條件:
其設定的已指派基準運算單元數量不為零。
並設定非零數量的自動調度資源運算單元。
已設定為使用閒置的運算單元,且專案中可用的閒置運算單元。
如果您嘗試將資源指派給不符合上述任一條件的要求,系統會顯示以下訊息:Assignment is pending, your project will be executed as on-demand.
您可以將資源指派給備援保留空間,但指派作業會在次要位置中暫緩。
所需權限
如要建立預留指派,您必須具備下列身分與存取權管理 (IAM) 權限:
bigquery.reservationAssignments.create
在管理專案和指派對象上。
下列預先定義的 IAM 角色都包含此權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。
將機構指派給保留項目
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Capacity management」(容量管理)。
按一下「Reservations」分頁標籤。
在預訂表格中找出該預訂。
展開
「Actions」 選項。按一下「建立作業」。
在「Create an assignment」(建立指派作業) 部分,按一下「Browse」。
瀏覽或搜尋機構,然後選取所需機構。
在「Job Type」(工作類型) 部分,選取要指派給此預留作業的工作類型。選項包括:
QUERY
CONTINUOUS
(預覽)PIPELINE
BACKGROUND
ML_EXTERNAL
如要進一步瞭解工作類型,請參閱預留指派。預設值為
QUERY
。如要進一步瞭解如何讓使用者透過 Enterprise Plus 版指派作業使用 Gemini in BigQuery,請參閱「設定 Gemini in BigQuery」。
按一下 [建立]。
SQL
如要將機構指派給保留項目,請使用 CREATE ASSIGNMENT
DDL 陳述式。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'organizations/ORGANIZATION_ID', job_type = 'JOB_TYPE');
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要將機構的工作指派給預留作業,請使用 bq mk
指令搭配 --reservation_assignment
標記:
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=ORGANIZATION_ID \ --job_type=JOB_TYPE \ --assignee_type=ORGANIZATION
更改下列內容:
建立預留指派時,請至少等待 5 分鐘再執行查詢。否則,系統可能會按照以量計價的定價模式計費。
將專案或資料夾指派給保留項目
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Capacity management」(容量管理)。
按一下「Reservations」分頁標籤。
在預訂表格中找出該預訂。
展開
「Actions」 選項。按一下「建立作業」。
在「Create an assignment」(建立指派作業) 部分,按一下「Browse」。
瀏覽或搜尋專案或資料夾,然後選取所需項目。
在「Job Type」(工作類型) 部分,選取要指派給此預留作業的工作類型。選項包括:
QUERY
CONTINUOUS
(預覽)PIPELINE
BACKGROUND
ML_EXTERNAL
如要進一步瞭解工作類型,請參閱預留指派。預設值為
QUERY
。按一下 [建立]。
SQL
如要將專案指派給預留項目,請使用 CREATE ASSIGNMENT
DDL 陳述式。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE");
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要將工作指派給預留作業,請使用 bq mk
指令並加上 --reservation_assignment
標記:
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=JOB_TYPE \ --assignee_type=PROJECT
更改下列內容:
Terraform
使用 google_bigquery_reservation_assignment
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會將專案指派給名為 my-reservation
的預留項目:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,該檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 將要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
建立預留指派時,請至少等待 5 分鐘再執行查詢。否則,系統可能會按照以量計價的定價模式計費。
如要建立只使用閒置運算單元的專案,請建立保留項目,並指派 0
運算單元,然後按照先前的步驟,將專案指派給該保留項目。
將專案指派給 none
指派給 none
代表沒有指派。指派給 none
的專案會採用以量計價。
SQL
如要將專案指派給 none
,請使用 CREATE ASSIGNMENT
DDL 陳述式。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="QUERY");
請依指示取代下列項目:
LOCATION
:應使用以量計價的職缺位置ASSIGNMENT_ID
:指派作業 IDID 必須是專案和位置的專屬 ID,開頭和結尾必須為小寫英文字母或數字,且只能包含小寫英文字母、數字和破折號。
PROJECT_ID
:要指派給保留項目的專案 ID
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要將專案指派給 none
,請使用 bq mk
指令並加上 --reservation_assignment
標記:
bq mk \ --location=LOCATION \ --reservation_assignment \ --reservation_id=none \ --job_type=QUERY \ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
更改下列內容:
LOCATION
:應使用以量計價的職缺位置PROJECT_ID
:要指派給none
的專案 ID
Terraform
使用 google_bigquery_reservation_assignment
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會將專案指派給 none
:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,該檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 將要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
覆寫查詢的預留值
如要尋求支援,或針對這項功能提供意見回饋,請來信至 bigquery-wlm-feedback@google.com。
如要在查詢中使用特定預留項目,您必須具備下列身分與存取權管理 (IAM) 權限:
- 保留項目或管理專案的
bigquery.reservations.use
。
如要指派查詢,以便在特定預留項目中執行,請執行下列任一操作:
主控台
前往「BigQuery」頁面
按一下
「SQL 查詢」。在查詢編輯器中輸入有效的 GoogleSQL 查詢。
依序按一下
「More」和「Query settings」。取消勾選「自動選取位置」核取方塊,然後選取預訂項目所在的區域或多區域。
在「Reservation」清單中,選取要執行查詢的預留項目。
按一下 [儲存]。
在編輯器分頁中編寫查詢並執行。查詢會在您指定的預留空間中執行。
SQL
您可以使用 @@reservation
系統變數,指派查詢執行的預留空間:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
SET @@reservation='RESERVATION'; SELECT QUERY;
更改下列內容:
RESERVATION
:要執行查詢的預留空間。QUERY
:要執行的查詢。
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
舉例來說,以下查詢會使用 SET
陳述式,將預留項目設為 US
多地區中的 test-reservation
,然後呼叫基本查詢:
SET @@reservation='projects/project1/locations/US/reservations/test-reservation'; SELECT 42;
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
在 Cloud Shell 中,使用
bq query
指令搭配--reservation_id
旗標執行查詢:bq query --use_legacy_sql=false --reservation_id=RESERVATION_ID 'QUERY'
更改下列內容:
RESERVATION_ID
:您要執行查詢的預留資料表。QUERY
:查詢的 SQL 陳述式。
舉例來說,下列查詢會在
US
多地區的test-reservation
保留區中執行:bq query --reservation_id=project1.US:test-reservation 'SELECT 42;'
API
如要使用 API 指定預留,請插入新工作,並填入 query
工作設定屬性。在 reservation
欄位中指定預訂項目。
將查詢中的保留指派指派給 none
在查詢中將保留項目指派作業指派給 none
,會強制工作使用隨選計費 (不預留),即使有預設保留項目指派作業也一樣。如要將預留項目指派給 none
,請按照下列步驟操作:
SQL
您可以使用 @@reservation
系統變數,將查詢執行的預留空間指派給 none
:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
SET @@reservation='none'; SELECT QUERY;
更改下列內容:
QUERY
:要執行的查詢。
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
例如,以下查詢會使用 SET
陳述式,強制要求查詢使用隨選結算功能,然後呼叫基本查詢:
SET @@reservation='none'; SELECT 42;
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
在 Cloud Shell 中,使用
bq query
指令搭配--reservation_id
旗標執行查詢:bq query --use_legacy_sql=false --reservation_id = none 'QUERY'
更改下列內容:
QUERY
:查詢的 SQL 陳述式。
舉例來說,下列指令會強制要求查詢使用以量計價,然後呼叫基本查詢:
bq query --reservation_id=none 'SELECT 42;'
API
如要使用 API 指定預留,請插入新工作,並填入 query
工作設定屬性。在 reservation
欄位中,將預訂指定為 none
。
將運算單元分配給 BigQuery ML 工作負載
以下各節將說明 BigQuery ML 模型的預留指派要求。如要建立這些保留項目指派作業,請按照「將機構指派給保留項目」或「將專案或資料夾指派給保留項目」中的程序操作。
外部模型
下列 BigQuery ML 模型類型會使用外部服務:
您可以建立使用 ML_EXTERNAL
工作類型的保留指派,將保留的運算單元指派給使用這些服務的查詢。如果找不到使用 ML_EXTERNAL
工作類型的預留指派,查詢工作會以以量計價執行。
對於外部模型訓練工作,保留指派中的時段會用於預先處理、訓練和後處理步驟。在訓練期間,這些執行緒無法搶先,但在預先處理和後置處理期間,您可以使用閒置執行緒。
矩陣分解模型
如要建立矩陣因式分解模型,您必須建立保留項目,使用 BigQuery Enterprise 或 Enterprise Plus 版,然後建立使用 QUERY
工作類型的保留項目指派。
其他模型類型
如果 BigQuery ML 模型不是外部模型或矩陣因式分解模型,您可以建立使用 QUERY
工作類型的保留項目指派作業,將保留的運算單元指派給使用這些服務的查詢。如果找不到具有 QUERY
工作類型的保留指派,查詢工作就會以依用量計價的方式執行。
查看保留項目指派作業
所需權限
如要搜尋特定專案、資料夾或機構的保留項目指派作業,您必須具備以下 Identity and Access Management (IAM) 權限:
- 管理專案的
bigquery.reservationAssignments.list
。
下列預先定義的 IAM 角色都包含此權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery Resource Viewer
BigQuery User
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。
尋找專案的保留項目指派作業
如要查看是否已將專案、資料夾或機構指派給保留項目,請按照下列步驟操作:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Capacity management」(容量管理)。
按一下「Reservations」分頁標籤。
在保留項目表格中展開保留項目,即可查看該保留項目指派的資源,或使用「Filter」欄位,依資源名稱篩選。
SQL
如要查看專案的查詢工作指派給哪個保留項目,請查詢 INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
檢視畫面。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
SELECT assignment_id FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT WHERE assignee_id = 'PROJECT_ID' AND job_type = 'JOB_TYPE';
請依指示取代下列項目:
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要查看專案的查詢工作指派給哪個保留項目,請使用 bq show
指令搭配 --reservation_assignment
標記:
bq show \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --job_type=JOB_TYPE \ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
更改下列內容:
可更新保留項目指派作業
將指派作業移至其他預訂
您可以將指派作業從一個保留項目移至另一個保留項目。
如要移動保留項目指派作業,您必須在管理專案和指派對象上具備下列身分與存取權管理 (IAM) 權限。
bigquery.reservationAssignments.create
bigquery.reservationAssignments.delete
以下每個預先定義的 IAM 角色都包含這些權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。
如要移動作業,請使用 bq update
指令:
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --destination_reservation_id=DESTINATION_RESERVATION \ ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
更改下列內容:
ADMIN_PROJECT_ID
:擁有預留資源的專案 IDLOCATION
:新預訂的位置RESERVATION_NAME
:要移動指派作業的保留項目DESTINATION_RESERVATION
:要將作業移至的預訂ASSIGNMENT_ID
:指派作業 ID如要取得指派 ID,請參閱「列出專案的保留項目指派」。
可刪除保留項目指派作業
您可以刪除保留指派作業,將專案從保留項目中移除。如果未將專案指派給任何保留項目,則會繼承上層資料夾或機構中的任何指派作業,如果沒有上層指派作業,則會採用以量計價模式。
刪除保留指派作業後,使用該保留項目的空格執行的工作會繼續執行,直到完成為止。
所需權限
如要刪除預留指派,您必須具備下列身分與存取權管理 (IAM) 權限:
bigquery.reservationAssignments.delete
在管理專案和指派對象上。
下列預先定義的 IAM 角色都包含此權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
將專案從保留項目中移除
如要將專案從保留項目中移除:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Capacity management」(容量管理)。
按一下「Reservations」分頁標籤。
在保留項目表格中展開保留項目,找出專案。
展開
「Actions」 選項。點選「刪除」。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
DROP ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
請依指示取代下列項目:
ADMIN_PROJECT_ID
:擁有預留資源的管理專案專案 IDLOCATION
:預訂的地點RESERVATION_NAME
:預訂名稱ASSIGNMENT_ID
:指派作業 ID如要找出指派 ID,請參閱「列出專案的保留項目指派」。
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要將專案從保留項目中移除,請使用帶有 --reservation_assignment
標記的 bq rm
指令:
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID
更改下列內容:
ADMIN_PROJECT_ID
:擁有預留資源的專案 IDLOCATION
:預訂的地點RESERVATION_NAME
:預訂名稱ASSIGNMENT_ID
:指派作業 ID如要取得指派 ID,請參閱「尋找專案的保留項目指派」。