管理工作負載指派項目
BigQuery Reservation API 可讓您購買專用運算單元 (稱為「承諾使用合約」)、建立運算單元集區 (稱為「預留項目」),以及將專案、資料夾和組織指派給這些預留項目。
本文說明如何為組織、資料夾、專案和個別主體建立、尋找、移動及刪除預留項目指派作業。此外,也會說明如何執行工作,例如設定專案上限和排定政策覆寫。詳情請參閱「瞭解預留項目」。
建立預留項目指派作業
如要使用購買的運算單元,請建立指派作業,將專案、資料夾、組織或主體指派給運算單元預留項目。您無法在指派層級指派或分配特定數量的運算單元,運算單元是在預留項目層級管理及指派。
指派邏輯和條件
專案會使用資源階層中最具體的單一預留項目。BigQuery 會使用下列評估邏輯來選取正確的預留項目:
- 資源階層優先順序:BigQuery 會根據被指派者資源上層結構 (專案 > 資料夾 > 組織) 評估指派項目。資料夾和組織指派作業不適用於標準版預留項目。
使用
principal屬性指派使用者專屬作業 (預先發布版):BigQuery 預留項目指派作業支援選用的principal屬性,管理員可根據執行工作的服務帳戶或使用者身分,將查詢轉送至特定預留項目。在特定被指派者資源中,主體相符的指派作業優先順序高於未設定主體的一般指派作業。每個專案的使用者專屬指派項目數量預設上限為 100 個。如需變更預設限制的協助,請與 bigquery-wlm-feedback@google.com 聯絡。
如要為預留項目建立指派作業,預留項目必須至少符合下列其中一項條件:
已設定非零的指派基準運算單元數量。
設定的自動調度運算單元數量不為零。
設為使用閒置的運算單元,且專案中有可用的閒置運算單元。
如果您嘗試將資源指派給不符合上述任一條件的預留項目,會收到下列訊息:Assignment is pending, your project will be executed as on-demand.
您可以將資源指派給容錯移轉預留項目,但指派作業會在次要位置中暫停。
所需權限
如要建立預留項目指派作業,您必須具備下列 Identity and Access Management (IAM) 權限:
- 管理專案和被指派者的
bigquery.reservationAssignments.create。
下列各項預先定義的 IAM 角色都包含這項權限:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
如要進一步瞭解 BigQuery 的 IAM 角色,請參閱「預先定義的角色和權限」。
將組織指派給預留項目
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Workload management」(工作負載管理)。
按一下「Reservations」(預留項目) 分頁標籤。
在預留項目表格中找出預留項目。
展開 「Actions」(動作) 選項。
按一下「建立作業」。
在「Create an assignment」(建立指派作業) 部分,按一下「Browse」(瀏覽)。
瀏覽或搜尋機構,並選取所需項目。
在「Job Type」(工作類型) 部分,選取要指派給這項預留項目的工作類型。您可以使用的選項包括:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
如要進一步瞭解工作類型,請參閱「預留項目指派作業」。預設值為
QUERY。如要進一步瞭解如何允許使用者透過 Enterprise Plus 版指派項目使用 Gemini in BigQuery,請參閱「設定 Gemini in BigQuery」。
選用:在「User」(使用者) 欄位中,輸入使用者、服務帳戶或第三方身分的電子郵件地址。
點選「建立」。
SQL
如要將組織指派給預留項目,請使用 CREATE ASSIGNMENT DDL 陳述式。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'organizations/ORGANIZATION_ID', job_type = 'JOB_TYPE', principal = 'PRINCIPAL');
替換下列內容:
ADMIN_PROJECT_ID:擁有預留資源的管理專案 專案 IDLOCATION:預留項目的位置RESERVATION_NAME:預留項目名稱ASSIGNMENT_ID:作業 IDID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。
ORGANIZATION_ID:組織 IDJOB_TYPE:要指派給這項預留項目的工作類型,例如QUERY、CONTINUOUS、PIPELINE、BACKGROUND或ML_EXTERNAL- 選用:
PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分格式principal欄位僅支援下列 IAM 主體 ID 格式:- Google 帳戶
- 服務帳戶
- 工作團隊身分集區中的單一身分
- workload identity pool 中的單一身分
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
如要將組織的工作指派給預留項目,請使用 bq mk 指令,並加上 --reservation_assignment 旗標:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_type=ORGANIZATION \
--assignee_id=ORGANIZATION_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
更改下列內容:
ADMIN_PROJECT_ID:擁有預留資源的管理專案 IDLOCATION:預留項目的位置RESERVATION_NAME:預留項目名稱ORGANIZATION_ID:組織 IDJOB_TYPE:要指派給這項預留項目的工作類型,例如QUERY、CONTINUOUS、PIPELINE、BACKGROUND或ML_EXTERNAL選用:
PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分格式。--principal旗標僅支援下列 IAM 主體 ID 格式:- Google 帳戶
- 服務帳戶
- 工作團隊身分集區中的單一身分
- workload identity pool 中的單一身分
建立預留項目指派作業後,請至少等待 5 分鐘再執行查詢。否則,系統可能會依據隨選定價模式收取查詢費用。
設定專案上限和排程政策覆寫
如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bigquery-wlm-feedback@google.com。
您可以建立專案上限 (一種指派規則),為預留項目的預設排程政策設定專案專屬覆寫值。舉例來說,您可以限制專案的運算單元用量和並行查詢數量。
其他類型的預留項目指派作業會決定專案使用的預留項目,而專案上限則是僅控管特定專案排程行為的指派資源。
建立專案上限時,須遵守下列限制:
- 指派對象必須是 Cloud de Confiance 專案。不支援資料夾和組織。
- 工作類型必須取消設定,或明確設為
JOB_TYPE_UNSPECIFIED。 max_slots政策值變更後,必須先啟動新的查詢,更新才會生效。- 專案層級的運算單元消耗量上限不會強制套用至
ML_EXTERNAL工作的訓練階段。詳情請參閱「將運算單元指派給 BigQuery ML 工作負載」。
如要透過這些排程政策指派作業建立專案上限,請選取下列其中一個選項:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在導覽選單中,依序前往「Administration」(管理) >「Workload management」(工作負載管理)。
按一下「指派規則」分頁標籤。
按一下「建立指派規則」。
在「Rule type」(規則類型) 清單中,選取「Project cap」(專案上限)。
在「Select a project」(選取專案) 清單中選取專案,然後按一下「Continue」(繼續)。
在「Reservation」(預留項目) 清單中選取預留項目,然後按一下「Continue」(繼續)。
在「Project override」(專案覆寫) 區段中,在「Max slots」(運算單元數量上限) 和「Max concurrency」(並行數量上限) 欄位中輸入值。
點選「建立」。
SQL
如要建立專案排程政策指派作業,請使用 CREATE
ASSIGNMENT DDL 陳述式,並搭配 scheduling_policy_max_slots 和 scheduling_policy_concurrency 選項。
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'projects/PROJECT_ID', scheduling_policy_max_slots = MAX_SLOTS, scheduling_policy_concurrency = MAX_CONCURRENCY);
更改下列內容:
bq
如要使用 bq 指令列工具建立排程政策指派作業,請使用 bq mk 指令,並加上 --scheduling_policy_max_slots 和 --scheduling_policy_concurrency 旗標。
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--scheduling_policy_max_slots=MAX_SLOTS \
--scheduling_policy_concurrency=MAX_CONCURRENCY
更改下列內容:
如要修改或移除現有的排程政策指派作業,請使用 ALTER ASSIGNMENT DDL 陳述式:
ALTER ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` SET OPTIONS ( scheduling_policy_max_slots = NEW_MAX_SLOTS, scheduling_policy_concurrency = NEW_MAX_CONCURRENCY); -- To remove a scheduling policy setting, set its values to null. To all settings, delete the assignment.
更改下列內容:
ADMIN_PROJECT_ID:擁有預留資源的管理專案 IDLOCATION:預留項目的位置RESERVATION_NAME:預留項目名稱ASSIGNMENT_ID:作業 IDNEW_MAX_SLOTS:專案中執行查詢的運算單元用量上限NEW_MAX_CONCURRENCY::專案允許同時執行的查詢數量 上限
如要查看有效的排程政策覆寫,請查看 INFORMATION_SCHEMA.ASSIGNMENTS 檢視畫面中的 scheduling_policy 和 assignment_type 欄。
將專案或資料夾指派給預留項目
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Workload management」(工作負載管理)。
按一下「Reservations」(預留項目) 分頁標籤。
在預留項目表格中找出預留項目。
展開 「Actions」(動作) 選項。
按一下「建立作業」。
在「Create an assignment」(建立指派作業) 部分,按一下「Browse」(瀏覽)。
瀏覽或搜尋專案或資料夾,然後選取所需項目。
在「Job Type」(工作類型) 部分,選取要指派給這項預留項目的工作類型。您可以使用的選項包括:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
目前無法透過控制台建立及修改更精細的背景工作類型,例如
BACKGROUND_COLUMN_METADATA_INDEX。如要進一步瞭解工作類型,請參閱「預留項目指派」。預設值為
QUERY。選用:在「User」(使用者) 欄位中,輸入使用者、服務帳戶或第三方身分的電子郵件地址。
點選「建立」。
SQL
如要將專案指派給預留項目,請使用 CREATE ASSIGNMENT DDL 陳述式。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE", principal="PRINCIPAL");
替換下列內容:
ADMIN_PROJECT_ID:擁有預留資源的管理專案 專案 IDLOCATION:預留項目的位置RESERVATION_NAME:預留項目名稱ASSIGNMENT_ID:作業 IDID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。
PROJECT_ID:要指派給預留項目的專案 IDJOB_TYPE:要指派給這項預留項目的工作類型,例如QUERY、CONTINUOUS、PIPELINE、BACKGROUND或ML_EXTERNAL選用:
PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分格式。principal欄位僅支援下列 IAM 主體 ID 格式:- Google 帳戶
- 服務帳戶
- 工作團隊身分集區中的單一身分
- workload identity pool 中的單一身分
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
如要將工作指派給預留項目,請使用 bq mk 指令並加上 --reservation_assignment 旗標:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_type=PROJECT \
--assignee_id=PROJECT_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
更改下列內容:
ADMIN_PROJECT_ID:擁有預留資源的管理專案 IDLOCATION:預留項目的位置RESERVATION_NAME:預留項目名稱PROJECT_ID:要指派給這項預留項目的專案 IDJOB_TYPE:要指派給這項預留項目的工作類型,例如QUERY、CONTINUOUS、PIPELINE、BACKGROUND或ML_EXTERNAL選用:
PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分格式。--principal旗標僅支援下列 IAM 主體 ID 格式:- Google 帳戶
- 服務帳戶
- 工作團隊身分集區中的單一身分
- workload identity pool 中的單一身分
Terraform
使用 google_bigquery_reservation_assignment 資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會將專案指派給名為 my-reservation 的預留項目:
如要在 Cloud de Confiance 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Cloud de Confiance 專案。
這項指令在每個專案中只需執行一次,且可在任何目錄中執行。
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!」訊息。
- 開啟 Cloud de Confiance 專案即可查看結果。在 Cloud de Confiance 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
建立預留項目指派作業後,請至少等待 5 分鐘再執行查詢。否則,系統可能會依據隨選定價模式收取查詢費用。
如要建立僅使用閒置運算單元的專案,請建立預留項目並指派 0 個運算單元,然後按照上述步驟將專案指派給該預留項目。
使用者專屬作業
您可以將預留項目指派給特定主體,例如專案、資料夾或組織中的使用者或服務帳戶。這項功能很實用,可將特定使用者的工作負載轉送至專屬預留項目。
決定要用於工作的預留項目時,BigQuery 會按照下列順序評估指派項目:
- 評估資源階層,從專案開始,接著是上層資料夾,然後是機構。
- 在階層的每個層級,BigQuery 會先檢查是否有指派項目與執行工作的特定主體相符。
- 如果沒有任何指派項目與該層級的主體相符,請檢查是否有不含主體的一般指派項目。
- 如果找不到指派項目,請移至階層中的下一個層級。
沒有主體的專案層級指派作業,會覆寫有主體的資料夾層級指派作業。
支援的主體格式
principal 選項支援下列 IAM v2 主體格式:
| 身分類型 | 主體格式 |
|---|---|
| 使用者 | principal://goog/subject/EMAIL_ADDRESS |
| 服務帳戶 | principal://iam.googleapis.com/projects/-/serviceAccounts/EMAIL_ADDRESS |
| 員工身分集區身分 | principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID |
| workload identity pool 身分 | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID |
將主體指派給預留項目
SQL
如要建立使用者專屬指派作業,請使用 CREATE ASSIGNMENT DDL 陳述式和 principal 選項。
CREATE ASSIGNMENT
`ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
assignee = 'projects/PROJECT_ID',
principal = 'principal://goog/subject/EMAIL_ADDRESS',
job_type = 'QUERY');
更改下列內容:
bq
如要建立使用者專屬指派作業,請使用 bq mk 指令搭配 --principal 旗標:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL \
--job_type=JOB_TYPE
更改下列內容:
將專案指派給 none
指派給 none 代表沒有指派。指派給 none 的專案採用隨選計價模式。
SQL
如要將專案指派給 none,請使用 CREATE ASSIGNMENT DDL 陳述式。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="QUERY");
替換下列內容:
LOCATION:應使用以量計價模式的工作位置ASSIGNMENT_ID:作業 IDID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。
PROJECT_ID:要指派給預留項目的專案 ID
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
如要將專案指派給 none,請使用 bq mk 指令並加上 --reservation_assignment 旗標:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=none \
--job_type=QUERY \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT
更改下列內容:
Terraform
使用 google_bigquery_reservation_assignment 資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會將專案指派給 none:
resource "google_bigquery_reservation_assignment" "default" { assignee = "projects/PROJECT_ID" job_type = "QUERY" reservation = "projects/ADMIN_PROJECT_ID/locations/LOCATION/reservations/none" }
更改下列內容:
如要在 Cloud de Confiance 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Cloud de Confiance 專案。
這項指令在每個專案中只需執行一次,且可在任何目錄中執行。
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!」訊息。
- 開啟 Cloud de Confiance 專案即可查看結果。在 Cloud de Confiance 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
如果管理專案中沒有預留項目,則必須使用 bq 指令列工具,查看指派給 none 的專案。
覆寫查詢的預留項目
如要在查詢中使用特定預留項目,您必須具備下列 Identity and Access Management (IAM) 權限:
- 預留項目或其管理專案的
bigquery.reservations.use。
如要指派查詢在特定預留項目中執行,請執行下列任一操作:
控制台
前往「BigQuery」頁面。
按一下 「SQL query」(SQL 查詢)。
在查詢編輯器中,輸入有效的 GoogleSQL 查詢。
依序點選「編輯」>「查詢設定」。
取消勾選「Automatic location setting」(自動位置設定) 核取方塊,然後選取預留項目所在的區域或多區域。
在「Reservation」(預留項目) 清單中,選取要執行查詢的預留項目。
按一下「儲存」。
在編輯器分頁中編寫查詢並執行。查詢會在您指定的預留項目中執行。
SQL
在工作階段中設定 @@reservation 系統變數,指派查詢執行的預留項目:
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
SET @@reservation='RESERVATION'; SELECT QUERY;
更改下列內容:
RESERVATION:要執行查詢的預留項目。QUERY:要執行的查詢。
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
舉例來說,下列查詢會使用 SET 陳述式,將預留項目設為 US 多區域中的 test-reservation,然後呼叫基本查詢:
SET @@reservation='projects/project1/locations/US/reservations/test-reservation'; SELECT 42;
bq
-
在 Cloud de Confiance 控制台啟用 Cloud Shell。
Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
在 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 AdminBigQuery Resource AdminBigQuery Resource EditorBigQuery Resource ViewerBigQuery User
如要進一步瞭解 BigQuery 的 IAM 角色,請參閱「預先定義的角色和權限」。
找出專案的預留項目指派作業
如要查看是否已將專案、資料夾或機構指派給保留項目,請按照下列步驟操作:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Workload management」(工作負載管理)。
按一下「Reservations」(預留項目) 分頁標籤。
在預留項目表格中,展開預留項目即可查看指派給該預留項目的資源,或使用「Filter」(篩選器) 欄位依資源名稱篩選。
SQL
如要找出專案查詢工作指派給哪個預留項目,請查詢 INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT 檢視表。
前往 Cloud de Confiance 控制台的「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
如要尋找使用者專屬指派項目,請加入 --principal 旗標:
bq show \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--job_type=JOB_TYPE \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL
更改下列內容:
ADMIN_PROJECT_ID:預留資源所屬專案的 IDLOCATION:要查看的預留項目位置JOB_TYPE:要指派給這項預留項目的工作類型,例如QUERY、CONTINUOUS、PIPELINE、BACKGROUND或ML_EXTERNALPROJECT_ID:專案 IDPRINCIPAL:主體 ID,例如principal://goog/subject/EMAIL_ADDRESS
如要查看有效的使用者專屬指派規則,請在 INFORMATION_SCHEMA.ASSIGNMENTS 檢視畫面中查看 principal 欄,或執行 bq ls
--reservation_assignment。此外,您也可以查詢 INFORMATION_SCHEMA.JOBS 檢視表,確認哪個預留項目執行了特定工作。使用 bq show --reservation_assignment 指令時,您可以加入選用的 --principal 旗標,篩選特定使用者指派項目。
更新預留項目指派作業
將指派項目移至其他預留項目
您可以將指派項目從一個預留項目移至另一個預留項目。
如要移動預留項目指派作業,您必須具備管理專案和指派對象的下列 Identity and Access Management (IAM) 權限。
bigquery.reservationAssignments.createbigquery.reservationAssignments.delete
下列每個預先定義的 IAM 角色都包含這些權限:
BigQuery AdminBigQuery Resource AdminBigQuery 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,請參閱「列出專案的預留項目指派作業」。
可刪除保留項目指派作業
如要從預留項目中移除專案,請刪除預留項目指派作業。如果專案未指派給任何預留項目,則會沿用上層資料夾或組織中的任何指派項目;如果沒有上層指派項目,則會採用隨選定價。
刪除預留項目指派作業時,使用該預留項目中運算單元執行的工作會繼續執行,直到完成為止。
所需權限
如要刪除預留項目指派作業,您必須具備下列 Identity and Access Management (IAM) 權限:
- 管理專案和被指派者的
bigquery.reservationAssignments.delete。
下列各項預先定義的 IAM 角色都包含這項權限:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
從預留項目中移除專案
如要將專案從保留項目中移除:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在導覽選單中,按一下「Workload management」(工作負載管理)。
按一下「Reservations」(預留項目) 分頁標籤。
在預留項目表格中,展開預留項目即可找到專案。
展開 「Actions」(動作) 選項。
點選「刪除」。
SQL
前往 Cloud de Confiance 控制台的「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,請參閱「尋找專案的預留項目指派作業」。