使用保留項目指派作業
透過 BigQuery Reservation API,您可以購買專屬運算單元 (稱為「承諾」)、建立運算單元集區 (稱為「預留項目」),以及將專案、資料夾和機構指派給這些預留項目。
建立保留項目指派作業
如要使用購買的運算單元,請建立「指派作業」,將專案、資料夾或機構指派給運算單元保留項目。
專案會使用資源階層中指派給自己的最明確單一預留項目。資料夾指派作業會覆寫機構指派作業,而專案指派作業則會覆寫資料夾指派作業。資料夾和機構指派作業不適用於標準版保留項目。
如要在預訂項目中建立指派事項,預訂項目必須符合下列至少一項條件:
已設定非零數量的指派基準運算單元。
設定的自動調度運算單元數量不為零。
已設為使用閒置運算單元,且專案中有可用的閒置運算單元。
如果您嘗試將資源指派給不符合至少一項條件的預訂項目,系統會顯示以下訊息:Assignment is pending, your project will be executed as on-demand.
您可以將資源指派給容錯移轉保留項目,但指派作業會在次要位置處於待處理狀態。
所需權限
如要建立預留項目指派作業,您必須具備下列身分與存取權管理 (IAM) 權限:
下列預先定義的 IAM 角色都具備這項權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。
將機構指派給預留項目
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「容量管理」。
按一下「預訂」分頁標籤。
在預訂表格中找出預訂項目。
展開「動作」
選項。按一下「建立作業」。
在「建立作業」部分,按一下「瀏覽」。
瀏覽或搜尋機構,然後選取所需項目。
在「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');
取代下列項目:
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
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」頁面。
在導覽選單中,按一下「容量管理」。
按一下「預訂」分頁標籤。
在預訂表格中找出預訂項目。
展開「動作」
選項。按一下「建立作業」。
在「建立作業」部分,按一下「瀏覽」。
瀏覽或搜尋專案或資料夾,然後選取所需項目。
在「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");
取代下列項目:
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
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
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
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 查詢。
按一下「更多」
,然後按一下「查詢設定」。取消勾選「自動位置設定」核取方塊,然後選取預留項目所在的區域或多區域。
在「預留項目」清單中,選取要執行查詢的預留項目。
按一下 [儲存]。
在編輯器分頁中編寫查詢並執行。查詢會在您指定的預訂中執行。
SQL
您可以使用 @@reservation
系統變數,指派查詢執行的預留位置:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
SET @@reservation='RESERVATION'; SELECT QUERY;
更改下列內容:
RESERVATION
:要讓查詢在其中執行的預訂。QUERY
:要執行的查詢。
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
舉例來說,下列查詢會使用 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
欄位中指定預訂。
將運算單元指派給 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」頁面。
在導覽選單中,按一下「容量管理」。
按一下「預訂」分頁標籤。
在預訂項目表格中展開預訂項目,即可查看指派給該預訂項目的資源,或使用「篩選」欄位依資源名稱篩選。
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';
取代下列項目:
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
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) 權限:
下列預先定義的 IAM 角色都具備這項權限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
將專案從預訂項目中移除
如要將專案從保留項目中移除:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,按一下「容量管理」。
按一下「預訂」分頁標籤。
在預訂表格中展開預訂項目,找出專案。
展開「動作」
選項。點選「刪除」。
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,請參閱「列出專案的預訂指派作業」。
按一下「執行」
。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
如要從預訂項目中移除專案,請使用 bq rm
指令搭配 --reservation_assignment
標記:
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,請參閱「尋找專案的預留項目指派作業」。