创建自定义费用控制措施

如果您有多个 BigQuery 项目和用户,可以通过申请自定义配额指定每天处理的查询数据量限额来管理费用。

通过为查询数据量创建自定义配额,您可以在项目级别或用户级别控制费用。

  • 项目级自定义配额会限制该项目中所有用户的总用量。

  • 用户级自定义配额会分别应用于项目中的所有用户和服务帐号

您无法将自定义配额分配给特定用户或服务帐号。

如需了解当前的按需查询价格,请参阅价格页面

如何设置或修改自定义配额

如需设置自定义配额或修改现有自定义配额,请参阅在 Cloud Console 中管理配额。配额更改会在几分钟内生效。

若要更改配额,您必须拥有 serviceusage.quotas.update 权限。以下预定义 IAM 角色拥有 serviceusage.quotas.update 权限:

自定义配额的实施方式

在您设置自定义配额后,BigQuery 会在您超出此配额时返回错误。

如果您超出项目级自定义配额,BigQuery 会返回以下 usageQuotaExceeded 错误:

Custom quota exceeded: Your usage exceeded the custom quota for
QueryUsagePerDay, which is set by your administrator. For more information,
see https://cloud.google.com/bigquery/cost-controls

如有用户超出用户级自定义配额,BigQuery 同样会返回 usageQuotaExceeded 错误,只是给出不同的错误消息:

Custom quota exceeded: Your usage exceeded the custom quota for
QueryUsagePerUserPerDay, which is set by your administrator. For more
information, see https://cloud.google.com/bigquery/cost-controls

如果您在查询中使用 _PARTITIONTIME_TABLE_SUFFIX 过滤条件,可能会意外收到 quotaExceeded 错误。目前,BigQuery 在检查您的查询以确定您是否会超出自定义配额时,会忽略查询中的 _PARTITIONTIME_TABLE_SUFFIX 过滤条件。

示例

假设您为含有 10 个用户(其中一个是服务帐号)的项目设置了以下自定义配额:

  • 项目级:每天 50 TB
  • 用户级:每天 10 TB

项目级自定义配额会限制该项目中所有用户的总用量。用户级自定义配额会分别应用于项目中的每个用户或服务帐号

下表列出了这 10 个用户在一天中运行完查询后的剩余配额。

用量 剩余配额
10 个用户每个查询了 4 TB 项目级:剩余 10 TB。
用户级:每个用户剩余 6 TB,但总共最多只能再查询 10 TB。
服务帐号另外查询了 6 TB 项目级:剩余 4 TB。
用户级:该服务帐号无法再使用 BigQuery。其他每个用户剩余 6 TB,但总共最多只能再查询 4 TB。
一个用户又另外查询了 4 TB 项目级:剩余 0 TB。
用户级:每个用户剩余 TB 数各不相同,但由于已超出项目级配额,所有用户都无法再使用 BigQuery。

由于已没有剩余配额,因此该项目中的任何人均无法再使用 BigQuery。

常见问题解答

客户可以自行预配自定义配额吗?

可以。客户可以在 Google Cloud Console 页面上自行预配配额。

如何了解自己的自定义配额水平?

您可以在 Google Cloud Console 页面上查看配额水平。

系统何时重新补充我的自定义配额?

每日配额会在美国太平洋时间零点重置。

如果我超出了自定义配额,但想重置该配额,该怎么做?

您可以通过另一个可访问您的数据集并且未设置自定义配额或尚未超出该配额的项目,来运行查询。

自定义配额是主动式还是被动式?换句话说,如果我有 10 TB 的配额,可以运行 11 TB 的查询吗?

自定义配额是主动式的,因此配额为 10 TB 时,无法运行 11 TB 的查询。