使用预留分配
通过 BigQuery Reservation API,您可以购买专用槽(称为承诺)、创建槽池(称为预留),以及将项目、文件夹和组织分配给这些预留。
创建预留分配
如需使用购买的槽,您可以创建分配,将项目、文件夹或组织分配给槽预留。
项目会使用它们所分配到的资源层次结构中最具体的单个预留。文件夹分配会替换组织分配,项目分配会替换文件夹分配。文件夹和组织分配不适用于标准版预留。
如需对预留创建分配,预留必须至少满足以下一个条件:
为它配置的已分配基准槽数不为零。
为它配置的自动扩缩槽数不为零。
它配置为使用空闲槽,并且项目中有可用的空闲槽。
如果您尝试将资源分配给未至少满足其中一个条件的预留,则会收到以下消息:Assignment is pending, your project will be executed as on-demand.
所需权限
如需创建预留分配,您需要以下 Identity and Access Management (IAM) 权限:
- 针对管理项目和分配对象的
bigquery.reservationAssignments.create
权限。
以下每个预定义的 IAM 角色都具有此权限:
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限。
将组织分配到预留
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
在导航面板中,转到容量管理部分。
点击预留标签页。
在预留表中找到预留
展开
操作选项。点击创建分配。
在创建分配部分,点击浏览。
浏览或搜索组织并选中它。
在作业类型部分中,选择要为此预留分配的作业类型。包括以下选项:
QUERY
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 = '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 页面。
在导航面板中,转到容量管理部分。
点击预留标签页。
在预留表中找到预留。
展开
操作选项。点击创建分配。
在创建分配部分,点击浏览。
浏览或搜索项目或文件夹并选中它。
在作业类型部分中,选择要为此预留分配的作业类型。包括以下选项:
QUERY
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
替换以下内容:
创建预留分配时,请至少等待 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="JOB_TYPE");
请替换以下内容:
LOCATION
:应使用按需价格的作业的位置ASSIGNMENT_ID
:分配的 ID此 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
将槽分配给 BigQuery ML 工作负载
以下 BigQuery ML 模型类型使用外部服务:
您可以使用 ML_EXTERNAL
分配类型为使用这些服务的查询分配预留的槽。如果未找到 ML_EXTERNAL
分配类型,则查询作业将按需运行。
使用带有 --reservation_assignment
标志的 bq mk
命令,并将 --job_type
标志设置为 ML_EXTERNAL
。
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --job_type=ML_EXTERNAL\ --assignee_id=PROJECT_ID \ --assignee_type=PROJECT
替换以下内容:
ADMIN_PROJECT_ID
:拥有预留资源的项目的 IDLOCATION
:预留的位置RESERVATION_NAME
:预留的名称PROJECT_ID
:要分配到此预留的项目的 ID
查找预留分配
所需权限
如需搜索给定项目、文件夹或组织的预留分配,您需要以下 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
替换以下内容:
更新预留分配
将分配转移到其他预留
您可以将分配从一项预留转移到另一项预留。
如需迁移预留分配,您需要在管理项目和分配对象上拥有以下 Identity and Access Management (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,请参阅列出项目的预留分配。
删除预留分配
如需从预留中移除项目,您可以删除预留分配。如果项目未分配到任何预留,则会沿用其父级文件夹或组织中的任何分配,或者如果没有父级分配,则会使用按需价格。
所需权限
如需删除预留分配,您需要以下 Identity and Access Management (IAM) 权限:
- 针对管理项目和分配对象的
bigquery.reservationAssignments.delete
权限。
以下每个预定义的 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`;
请替换以下内容:
点击
运行。
如需详细了解如何运行查询,请参阅运行交互式查询。
bq
如需从预留中移除项目,请将 bq rm
命令与 --reservation_assignment
标志结合使用:
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID
替换以下内容: