价格

BigQuery 提供灵活的价格选项,可以根据您的具体项目与预算需求进行调整。

BigQuery 存储费用仅按您存储的数据量计算,可采用以下付费模式:

  • 活跃 - 按月付费,适用于在过去 90 天内发生了修改的表中所存储的数据。
  • 长期 - 按月付费,费用较低,适用于在过去 90 天内未发生修改的表中所存储的数据。

查询费用按查询所处理的数据量收取,可采用以下付费模式:

  • 按需 - 最灵活的付费方案。按需查询价格仅取决于使用量。
  • 固定 - 企业客户通常更倾向于固定查询价格,因为这种模式提供的月度费用是固定的,并且可预测。

如需详细了解存储和查询价格,请参阅 Google Cloud Platform SKU

价格摘要

下表汇总了 BigQuery 的价格。表中所述的操作受 BigQuery 配额和限制的约束。

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
操作 价格 详情
活跃存储 每月前 10 GB 免费。详情请参阅存储价格
长期存储 每月前 10 GB 免费。详情请参阅存储价格
Storage API BigQuery Storage API 不在免费层级的涵盖范围内。
流式插入 您需要为成功插入的行支付费用。单行最小计为 1 KB。详情请参阅流式插入价格
查询(分析) 每月前 1 TB 免费,详情请参阅按需价格。 查询量较大的客户也可选择固定价格

如果您使用非美元货币付费,则请参阅在 Cloud Platform SKU 上以您的币种列出的价格。

费用结算方式

您创建的每个项目都有与之关联的结算帐号。由项目中运行的 BigQuery 作业(如查询作业)产生的任何费用均会计入关联的结算帐号,即使与组织外的其他人共享了项目资源也是如此。BigQuery 存储费用也会计入关联的结算帐号。

如何分析结算数据

您可以在 Cloud Console 中使用“Cloud Billing 报告”页面来查看 BigQuery 费用和趋势。如需了解如何使用报告来分析结算数据,请参阅借助结算报告查看您的费用趋势

如需了解如何在 BigQuery 中分析您的结算数据,请参阅 Cloud Billing 文档中的将结算数据导出到 BigQuery

免费操作

下表列出了我们为各个地区提供的免费 BigQuery 操作。这些操作受 BigQuery 配额和限制的约束。

操作 详情
加载数据

在将 Cloud Storage 中的数据加载到 BigQuery 中时,您不需要为加载操作支付费用,但需要支付在 Cloud Storage 中存储数据的费用。如需了解详情,请参阅 Cloud Storage 价格页面上的数据存储。数据一旦加载到 BigQuery 中,就会按照 BigQuery 的存储价格计费。如需了解详情,请参阅将数据加载到 BigQuery 中

在 BigQuery 中创建数据集时,您必须为数据选择一个位置。如果您选择 US,则可以将来自其他任何区域的 Cloud Storage 存储分区的数据加载到该数据集所含的表中。目前,将来自其他区域的数据加载到 US 数据集时,系统不会对互联网出站流量收费。

如果您选择的位置不是 US,则您必须执行以下操作之一:

  • 从该区域的 Cloud Storage 存储分区加载数据(此存储分区可以是一个多区域型存储分区,也可以是数据集所在区域的一个区域型存储分区)
  • 将数据复制到该区域的一个存储分区中

将来自一个 Cloud Storage 区域的数据复制到另一个 Cloud Storage 区域时,系统会按照 Cloud Storage 网络流量价格收费。

复制数据 您不需要为复制表的操作支付费用,但需要支付新表和所复制表的存储费用。如需了解详情,请参阅复制现有的表
导出数据 在将 BigQuery 中的数据导出到 Cloud Storage 时,您不需要为导出操作支付费用,但需要支付 Cloud Storage 的数据存储费用。如需了解详情,请参阅 Cloud Storage 价格页面上的数据存储,以及从 BigQuery 导出数据
删除数据集 您不需要为删除数据集的操作支付费用。
删除表、视图和分区 您不需要为删除表、视图或个别表分区的操作支付费用。
元数据操作 您不需要为 list、get、patch、update 和 delete 调用支付费用。示例包括(但不限于):列出数据集、更新数据集的访问控制列表以及更新表的说明。
读取伪列 您不需要为查询以下伪列支付费用。

_TABLE_SUFFIX - 用于查询通配符表在标准 SQL 中实现表修饰器语义
_PARTITIONDATE - 用于查询按提取时间分区的表
_PARTITIONTIME - 用于查询按提取时间分区的表
_FILE_NAME - 用于查询基于外部数据源的表
读取元表 您无需为查询下列元表支付费用:

__PARTITIONS_SUMMARY__ - 用于获取分区表或按提取时间分区的表中分区的相关元数据
__TABLES_SUMMARY__ - 用于获取数据集中表和视图的相关元数据

“始终免费”层级的用量限额

作为 Google Cloud Platform 免费层级的一部分,BigQuery 提供了一些免费资源,但用量不能超过特定限额。这些免费资源的用量限额在免费试用期间及试用结束后均有效。如果超过这些用量限额且免费试用期已过,您将需要根据本页中列出的价格支付费用。

资源 每月免费用量上限 详情
存储 每月前 10 GB 数据免费。 存储在 BigQuery 中的 BigQuery ML 模型和训练数据会计入存储服务的免费层级。
查询(分析) 每月免费处理前 1 TB 查询数据。 使用 BigQuery ML 预测、检查和评估功能的查询会计入分析服务的免费层级。包含 CREATE MODEL 语句的 BigQuery ML 查询不计入免费层级。
如果客户的查询量较大,并且更倾向于每月支付稳定的费用,则也可选择固定价格
BigQuery ML CREATE MODEL 查询 包含 CREATE MODEL 语句的查询每月处理的前 10 GB 数据免费。 BigQuery ML CREATE MODEL 查询不计入 BigQuery 分析的免费层级。

查询价格

查询价格是指运行您的 SQL 命令和用户定义的函数而产生的费用。BigQuery 会根据处理的字节数(也称为读取的字节数)这一指标收取查询费用。无论您是将数据存储在 BigQuery 中,还是存储在外部数据源(例如 Cloud Storage、Google 云端硬盘或 Cloud Bigtable)中,我们都会根据处理的字节数向您收取费用。

当您运行查询时,即使您对结果设置了明确的 LIMIT,我们也会根据您选择的列中处理的总数据量向您收取费用。每列的总字节数是基于该列的数据类型计算的。如需详细了解我们如何计算您的数据大小,请参阅数据大小计算

查询价格取决于您的使用模式:即每月按固定费率支付查询费用,或根据互动式查询情况计费。企业客户通常更愿意采用固定查询价格,因为这种模式提供的月度费用是一致的。按需(即互动式)价格较为灵活,仅按用量计费。

按需价格

按需查询价格如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
操作 价格 详情
查询(分析) 每月免费处理前 1 TB 数据。 如果客户的查询量较大,并且更倾向于每月支付稳定的费用,则也可选择固定价格

如果您使用非美元货币付费,则请参阅在 Cloud Platform SKU 上以您的币种列出的价格。

请注意以下与查询费用有关的事项:

  • 您不需要为返回错误的查询或从缓存中检索结果的查询付费。
  • 系统在计算费用时会四舍五入到最接近的 MB 数,查询引用的每个表所处理的数据至少计为 10 MB,每个查询所处理的数据也至少计为 10 MB。
  • 取消正在运行的查询作业可能会产生费用,费用最高可达正常完成查询所需的全部费用。
  • BigQuery 使用列式数据结构。我们会根据您选择的列中处理的总数据量向您收费,而每列的总数据量是基于该列中的数据类型计算的。如需详细了解我们如何计算您的数据大小,请参阅数据大小计算

按需查询费用控制条件

BigQuery 提供了费用控制机制,可让您为查询费用设置上限。您可以进行如下设置:

固定价格

BigQuery 提供固定价格模式,以满足查询量较大的客户或大型企业客户的需求,此类客户可能更希望每月支付稳定的查询费用,而不是根据处理的数据量(TB 数)以按需计费的方式支付费用。如果您选择固定价格,则处理的所有字节的费用都包含在每月固定价格中。

BigQuery 会根据客户的历史记录、使用情况和支出,自动管理槽配额。如果客户需要保持每月分析支出不变,BigQuery 还提供了固定价格。如果您注册了固定价格方案,则可以购买指定数量的槽用于处理查询。

固定价格:

  • 仅适用于查询费用,不适用于存储费用。如需了解存储费用,请参阅存储价格
  • 适用于与采用固定价格的结算帐号关联的所有项目。
  • 可额外提供 BigQuery 槽。如需了解详情,请参阅下表。
  • 为互动式查询提供更高的查询并发处理能力。

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
每月费用 槽数 额外槽数
2000

如果您使用非美元货币付费,则请参阅在 Cloud Platform SKU 上以您的币种列出的价格。

如果有意了解固定价格,请与您的销售代表联系

固定价格方案中的槽分配方式

与其他收费方案类似,我们会向您在注册固定价格方案时指定的结算帐号收取按固定费率计算的费用。您可以为一个结算帐号关联多个项目,这些项目可以具有在不同位置产生的数据集和查询费用。

属于区域性资源。如果您购买了固定价格方案,则可以针对关联到该结算帐号的所有项目,按位置分配槽。

例如,假设您通常会同时在欧盟和美国多区域位置运行查询,并且购买了包含 6000 个槽的固定价格方案,那么您可以按照如下方式来分配槽:

  • 美国 4000 个槽
  • 欧盟 2000 个槽

存储价格

数据一旦加载到 BigQuery 中,您就需要支付相关的存储费用。存储价格基于您表中所存储的数据量(在未压缩的情况下)计算。

数据大小根据各列的数据类型计算。如需详细了解我们如何计算数据大小,请参阅数据大小计算

活跃存储

活跃存储费用如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
存储类型 价格 详情
活跃存储 每月免费存储前 10 GB。

如果您使用非美元货币付费,则请参阅在 Cloud Platform SKU 上以您的币种列出的价格。

存储价格基于每秒每 MB 的价格按比例计算。例如,如果您的存储情况如下:

  • 存储 100 MB 半个月,则需要支付 $0.001(十分之一美分)
  • 存储 500 GB 半个月,则需要支付 $5
  • 存储 1 TB 一整月,则需要支付 $20

长期存储

如果一个表连续 90 天未发生修改,则该表的存储价格会自动下降 50% 左右。某表被视为长期存储后,不会出现性能、耐用性、可用性方面和任何其他功能的降级。

长期存储价格如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
存储类型 价格 详情
长期存储 每月免费存储前 10 GB。

如果表发生了修改,价格会恢复到常规的存储价格,且 90 天连续未修改时间的计时器从零开始重新计数。对表中数据进行任何修改都会重置该计时器,包括:

操作 详情
将数据加载到表中 通过任何加载或查询作业将数据附加到目标表或覆盖目标表。
将数据复制到表中 通过任何复制作业将数据附加到目标表或覆盖目标表。
将查询结果写入表中 通过任何查询作业将数据附加到目标表或覆盖目标表。
使用数据操纵语言 (DML) 使用 DML 语句修改表数据。
使用数据定义语言 (DDL) 使用 `CREATE OR REPLACE TABLE` DDL 语句替换表。
将数据流式插入到表中 使用 tabledata.insertAll API 调用来提取数据。

其他所有操作均不会重置计时器,包括:

  • 查询表
  • 创建表查询视图
  • 从表中导出数据
  • 复制表(至另一个目标表)
  • 修补或更新表资源

对于分区表,它的每一个分区都会被视为单独的个体来考虑是否适用长期存储价格。如果某个分区在过去 90 天内未被修改,则该分区中的数据将被视为长期存储并按折扣价计费。

对于在结算周期内达到 90 天阈值的表,我们会相应地按比例计算其价格。

长期存储价格仅适用于 BigQuery 存储,不适用于外部数据源中存储的数据,这些数据源包括 Cloud Bigtable、Cloud Storage 和 Google 云端硬盘等。

BigQuery Storage API 价格

BigQuery Storage API 价格取决于在 ReadRows 流式插入操作期间分配给数据流的数据量。费用取决于传入数据的大小,而非传输的字节数。

数据大小根据各列的数据类型计算。如需详细了解我们如何计算数据大小,请参阅数据大小计算

按需价格

BigQuery Storage API 的按需费用如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
价格 详情
BigQuery Storage API 不在免费层级的涵盖范围内。

如果您使用非美元货币付费,请参阅 Cloud Platform SKU 上以您的币种列出的价格。

固定价格

目前,采用固定价格的客户每月可以使用 BigQuery Storage API 免费读取最多 300 TB 的数据。对于每月超过 300 TB 额度的部分,系统将按照按需费率进行计费。

数据大小计算

当您将数据加载到 BigQuery 中或查询数据时,我们会根据数据大小向您收取费用。数据大小是基于每个列的数据类型的大小计算的。

所存储数据的大小以及您的查询所处理的数据大小以千兆字节 (GB) 为单位计算,其中 1 GB 为 230 个字节。此计量单位也称为吉比字节 (GiB)。与之类似,1 TB 是 240 个字节 (1024 GB)。

BigQuery 的数据类型的大小如下所示:

数据类型 大小
INT64/INTEGER 8 个字节
FLOAT64/FLOAT 8 个字节
NUMERIC 16 个字节
BOOL/BOOLEAN 1 个字节
STRING 2 个字节 + UTF-8 编码字符串大小
BYTES 2 个字节 + UTF-8 编码字符串大小
DATE 8 个字节
DATETIME 8 个字节
TIME 8 个字节
TIMESTAMP 8 个字节
STRUCT/RECORD 0 个字节 + 包含的字段的大小
GEOGRAPHY 16 字节 + 24 字节 * GEOGRAPHY 类型的数据中的顶点数量(您可以使用 ST_NumPoints 函数验证顶点数量)

所有数据类型的 null 值均计为 0 个字节。

重复列以数组形式存储,大小根据值的数量计算。例如,如果整数列 (INT64) 重复 (ARRAY<INT64>) 且包含 4 个条目,则系统会将该列计算为 32 个字节(即 4 个条目 x 8 个字节)。

流式插入价格

您可以免费将数据加载到 BigQuery 中,但需要为流式插入的数据支付少许费用。

流式插入的价格如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
操作 价格 详情
流式插入 您需要为成功插入的行支付费用。单行最小计为 1 KB。

BigQuery ML 价格

价格适用于当前支持的所有模型。BigQuery ML 价格取决于您的使用模式:即固定还是按需。

BigQuery ML 固定价格

BigQuery 提供固定价格,以满足查询量较大的客户或大型企业客户的需求,此类客户可能更希望每月支付稳定的查询费用,而不是按需支付模型的创建、评估、检查和预测费用。

目前我们不对 BigQuery ML 额外收取固定费用。 如果您选择固定价格,2019 年 7 月 31 日前,BigQuery 固定价格中包含 BigQuery ML 费用。

BigQuery ML 按需价格

BigQuery ML 的按需查询价格取决于操作类型:模型创建、模型评估、模型检查或模型预测。

BigQuery ML 的按需价格如下所示:

美国(多区域) 欧盟(多区域) 洛杉矶 (us-west2) 蒙特利尔 (northamerica-northeast1) 北弗吉尼亚 (us-east4) 圣保罗 (southamerica-east1) 芬兰 (europe-north1) 伦敦 (europe-west2) 苏黎世 (europe-west6) 香港 (asia-east2) 孟买 (asia-south1) 台湾 (asia-east1) 东京 (asia-northeast1) 新加坡 (asia-southeast1) 悉尼 (australia-southeast1)
按月
操作 价格 详情
模型创建 仅限 50 次迭代。
CREATE MODEL 语句每月处理的前 10 GB 数据计入 BigQuery 免费层级,是免费的。
评估、检查和预测 评估、检查和预测查询的费用计入 BigQuery 免费层级每月的 1 TB 数据中。

如果您使用非美元货币付费,则请参阅在 Cloud Platform SKU 上以您的币种列出的价格。

数据操纵语言 (DML) 价格

BigQuery 会根据 DML 查询处理的字节数收取查询费用。

针对非分区表的 DML 价格

对于非分区表,处理的字节数按如下方式计算:

DML 语句 处理的字节数
INSERT 对执行查询时所扫描的表引用的所有列处理的总字节数。
UPDATE 执行查询时所扫描的表引用的所有列包含的总字节数
+ UPDATE 开始时所更新的表中所有列的总字节数。
DELETE 执行查询时所扫描的表引用的所有列包含的总字节数
+ DELETE 开始时所修改的表中所有列的总字节数。
MERGE 如果 MERGE 语句中仅包含 INSERT 子句,您需要支付的费用取决于对执行查询时所扫描全部表中引用的所有列处理的总字节数。
如果 MERGE 语句中包含 UPDATEDELETE 子句,则您需要支付的费用取决于对执行查询时所扫描源表中引用的所有列处理的总字节数
MERGE 开始时目标表中所有列的总字节数之和。

针对分区表的 DML 价格

对于分区表,处理的字节数按如下方式计算:

DML 语句 处理的字节数
INSERT 对执行查询时扫描的所有分区中引用的所有列处理的总字节数。
UPDATE 对执行查询时扫描的表的所有分区中引用的所有列处理的总字节数
+ UPDATE 开始时所更新表的更新或扫描分区中所有列的总字节数。
DELETE 对执行查询时扫描的表的所有分区中引用的所有列处理的总字节数
+ DELETE 开始时所修改表的修改或扫描分区中所有列的总字节数。
MERGE 如果 MERGE 语句中仅包含 INSERT 子句,您需要支付的费用将取决于对执行查询时所扫描所有分区中引用的所有列处理的总字节数。
如果 MERGE 语句中包含 UPDATEDELETE 子句,您需要支付的费用则取决于对执行查询时所扫描源表的所有分区中引用的所有列处理的总字节数
MERGE 开始时目标表的更新、删除或扫描分区中所有列的总字节数之和。

数据定义语言 (DDL) 价格

BigQuery 会根据 DDL 查询处理的字节数收取查询费用。对于 DDL 语句,处理的字节数按如下方式计算:

DDL 语句 处理的字节数
CREATE TABLE 无。
CREATE TABLE ... AS SELECT ... 对执行查询时所扫描的表引用的所有列处理的总字节数。
CREATE VIEW 无。
DROP TABLE 无。
DROP VIEW 无。

集群表价格

在 BigQuery 中创建和使用聚簇表时,您要支付的费用取决于表中存储的数据量以及您对数据运行的查询。集群表可通过剪除数据以使其不会被查询处理,从而帮助您降低查询费用。此过程称为块剪除。

块剪除

BigQuery 会根据集群列中的值对集群表中的数据排序,并以块的形式整理这些数据。

当您提交包含对聚簇列进行过滤的查询时,BigQuery 会使用聚簇信息高效地确定某个块是否包含与查询相关的任何数据。这样一来,BigQuery 就可以仅扫描相关块(此过程称为块剪除)。

查询价格基于处理的字节数。如果您对集群表运行查询,并且此查询包含对集群列应用的过滤条件,则 BigQuery 会使用过滤条件表达式和块元数据来剪除查询要扫描的块。

当某个块被剪除后,系统不会对其进行扫描。只有经过扫描的块才会用于计算查询所处理的数据量(以字节为单位)。对集群表运行的查询所处理的字节数等于该查询在已扫描的块所引用的各列中读取的字节总数。

如果使用多个过滤条件的查询对聚簇表进行了多次引用,则 BigQuery 会分别收取各个过滤条件下相应块中列的扫描费用。

BigQuery Data Transfer Service 价格

BigQuery Data Transfer Service 每月按比例收取费用。具体计费方式如下:

源应用 每月费用(按比例)
Campaign Manager

每个唯一广告客户 ID(impression 表中的广告客户 ID)$2.50

Cloud Storage

免费。实施 BigQuery 配额与限制

Google Ads

每个唯一客户 ID(Customer 表中的 ExternalCustomerID,包括展示次数为零的客户 ID)$2.50

Google Ad Manager

每个网络 ID $100

Google Play

2018 年 8 月 31 日之前免费。自 2018 年 9 月 1 日起生效的价格为:

Installs_country 表中每个唯一软件包名称 $25。

YouTube 频道

每个频道 $5

YouTube 内容所有者

每 1000 个唯一频道 $5(每个唯一频道 $0.005)- content_owner_basic_a3 表中的频道 ID。

数据仓库迁移服务:
TeraData

在测试期间免费。 但要遵守 BigQuery 对于加载作业的限制

在数据转移至 BigQuery 后,您需要按标准的 BigQuery 存储查询价格付费。如需详细了解价格信息,请与销售人员联系

计算唯一 ID

您创建的每项数据转移作业每天都会运行一次或多次。每次运行都会记录遇到的每个唯一 ID 以及运行完成的日期。系统只会在转移完成的日期统计 ID。例如,如果某次运行开始于 7 月 14 日,完成于 7 月 15 日,系统会在 7 月 15 日统计唯一 ID。

如果某天同一转移作业的多次运行都遇到了某个唯一 ID,则该 ID 只会计入一次。但对于不同的转移作业,系统会分别统计唯一 ID。如果两个不同转移作业的运行均遇到了某个唯一 ID,该 ID 会计入两次。

计算数据回填费用

如果您安排了数据回填,则意味着您每天都安排了一次转移作业运行。在这种情况下,系统会根据计算唯一 ID 中描述的方法向您收取费用。

停止 BigQuery Data Transfer Service 计费

要停止计费,请停用删除您的转移作业。

价格示例

估算查询费用

如需查询价格示例,请参阅估算查询费用

估算存储费用

如需存储价格示例,请参阅估算存储费用

针对非分区表的 DML 价格示例

以下示例演示了 BigQuery 如何计算 DML 语句在修改非分区表时所读取的字节数。

示例 1:对非分区表调用 UPDATE 语句

table1 包含两列:col1(类型为 INTEGER)和 col2(类型为 STRING)。

UPDATE table1 SET col1 = 1 WHERE col1 = 2;

本例中处理的字节数 =

  • col1 中的总字节数 +
  • col2 中的总字节数

示例 2:对非分区表调用 UPDATE 语句

table1 包含两列:col1(类型为 INTEGER)和 col2(类型为 STRING)。table2 包含一列:field1(类型为 INTEGER)。

UPDATE table1 SET col1 = 1 WHERE col1 in (SELECT field1 from table2)

本例中处理的字节数 =

  • UPDATE 开始之前 table1.col1 中的总字节数 +
  • UPDATE 开始之前 table1.col2 中的总字节数 +
  • table2.field1 中的总字节数

针对分区表的 DML 价格示例

以下示例演示了 BigQuery 如何计算 DML 语句在修改按获取时间进行分区的表时所读取的字节数。要查看示例中所用表的 JSON 架构表示形式,请参阅“使用 DML 语句更新分区表数据”页面上的示例使用的表

示例 1:对按获取时间进行分区的表调用 INSERT 语句

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mytable 包含两列:field1(类型为 INTEGER)和 field2(类型为 STRING)。

INSERT INTO mytable (_PARTITIONTIME, field1) AS SELECT TIMESTAMP(DATE(ts)), id from mytable2

本例中处理的字节数 =

  • mytable2.ts 中的总字节数 +
  • mytable2.id 中的总字节数

要将行插入其中的表 (mytable) 的大小不会影响查询费用。

示例 2:对分区表调用 INSERT 语句

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mycolumntable 包含四列:field1(类型为 INTEGER)、field2(类型为 STRING)、field3(类型为 BOOLEAN)和 ts(类型为 TIMESTAMP)。

INSERT INTO mycolumntable (ts, field1) AS SELECT ts, id from mytable2

本例中处理的字节数 =

  • mytable2.ts 中的总字节数 +
  • mytable2.id 中的总字节数

要将行插入其中的表 (mycolumntable) 的大小不会影响查询费用。

示例 3:对按获取时间进行分区的表调用 UPDATE 语句

DML 语句 1:更新单个分区

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mytable 包含两列:field1(类型为 INTEGER)和 field2(类型为 STRING)。

UPDATE project.mydataset.mytable T SET T.field1 = T.field1 + 100 WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

本例中处理的字节数 =

  • mytable2.id 中的总字节数 +
  • “2017-05-01”分区内 mytable.field1 中的总字节数 +
  • “2017-05-01”分区内 mytable.field2 中的总字节数

DML 语句 2:根据表的一个分区更新另一个分区

UPDATE project.mydataset.mytable T SET T._PARTITIONTIME = TIMESTAMP(“2017-06-01”), T.field1 = T.field1 + 100 WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT 1 from project.mydataset.mytable S WHERE S.field1 = T.field1 AND S._PARTITIONTIME = TIMESTAMP("2017-06-01") )

本例中处理的字节数 =

  • “2017-05-01”分区内 mytable.field1 中的总字节数 +
  • “2017-05-01”分区内 mytable.field2 中的总字节数 +
  • “2017-06-01”分区内 mytable.field1 中的总字节数 +
  • “2017-06-01”分区内 mytable.field2 中的总字节数

在本例中,UPDATE 语句的费用取决于“2017-05-01”和“2017-06-01”所对应的分区中所有字段的大小总和。

示例 4:对分区表调用 UPDATE 语句

DML 语句 1:更新单个分区

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mycolumntable 包含四列:field1(类型为 INTEGER)、field2(类型为 STRING)、field3(类型为 BOOLEAN)和 ts(类型为 TIMESTAMP)。

UPDATE project.mydataset.mycolumntable T SET T.field1 = T.field1 + 100 WHERE DATE(T.ts) = “2017-05-01” AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

本例中处理的字节数 =

  • mytable2.id 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field1 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field2 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field3 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.ts 中的总字节数

DML 语句 2:根据表的一个分区更新另一个分区

UPDATE project.mydataset.mycolumntable T SET T.ts = TIMESTAMP(“2017-06-01”), T.field1 = T.field1 + 100 WHERE DATE(T.ts) = “2017-05-01” AND EXISTS (SELECT 1 from project.mydataset.mycolumntable S WHERE S.field1 = T.field1 AND DATE(S.ts) = "2017-06-01")

本例中处理的字节数 =

  • “2017-05-01”分区内 mycolumntable.field1 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field2 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field3 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.ts 中的总字节数 +
  • “2017-06-01”分区内 mycolumntable.field1 中的总字节数 +
  • “2017-06-01”分区内 mycolumntable.field2 中的总字节数 +
  • “2017-06-01”分区内 mycolumntable.field3 中的总字节数 +
  • “2017-06-01”分区内 mycolumntable.ts 中的总字节数

在本例中,UPDATE 语句的费用取决于“2017-05-01”和“2017-06-01”所对应的分区中所有字段的大小总和。

示例 5:对按获取时间进行分区的表调用 DELETE 语句

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mytable 包含两列:field1(类型为 INTEGER)和 field2(类型为 STRING)。

DELETE project.mydataset.mytable T WHERE T._PARTITIONTIME = TIMESTAMP(“2017-05-01”) AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

本例中处理的字节数 =

  • mytable2.id 中的总字节数 +
  • “2017-05-01”分区内 mytable.field1 中的总字节数 +
  • “2017-05-01”分区内 mytable.field2 中的总字节数

示例 6:对分区表调用 DELETE 语句

mytable2 包含两列:id(类型为 INTEGER)和 ts(类型为 TIMESTAMP)。mycolumntable 包含四列:field1(类型为 INTEGER)、field2(类型为 STRING)、field3(类型为 BOOLEAN)和 ts(类型为 TIMESTAMP)。

DELETE project.mydataset.mycolumntable T WHERE DATE(T.ts) =“2017-05-01” AND EXISTS (SELECT S.id from project.mydataset.mytable2 S WHERE S.id = T.field1)

本例中处理的字节数 =

  • mytable2.id 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field1 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field2 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.field3 中的总字节数 +
  • “2017-05-01”分区内 mycolumntable.ts 中的总字节数

聚簇表价格示例

您有一个名为 ClusteredSalesData 的集群表。该表按 timestamp 列分区,并按 customer_id 列划分集群。数据整理到下面这些块中:

分区标识符 块 ID 块中 customer_id 的最小值 块中 customer_id 的最大值
20160501 B1 10000 19999
20160501 B2 20000 24999
20160502 B3 15000 17999
20160501 B4 22000 27999

您对该表运行以下查询。此查询包含对 customer_id 列应用的过滤条件。

SELECT
  SUM(totalSale)
FROM
  `mydataset.ClusteredSalesData`
WHERE
  customer_id BETWEEN 20000
  AND 23000
  AND DATE(timestamp) = "2016-05-01"

此查询执行以下操作:

  • 扫描 B2 和 B4 块中的 timestampcustomer_idtotalSale 列。
  • 剪除 B3 块,因为在 timestamp 分区列上应用了 DATE(timestamp) = "2016-05-01" 过滤条件谓语。
  • 剪除 B1 块,因为在 customer_id 聚簇列上应用了 customer_id BETWEEN 20000 AND 23000 过滤条件谓语。

BigQuery ML 价格示例

BigQuery ML 费用不会在您的对帐单上单独列出。如果您采用的是固定价格方案,则在 2019 年 7 月 31 日之前,BigQuery ML 费用会计入按固定费率计算的费用之中。

如果您采用的是按需价格方案,则 BigQuery ML 费用会计入 BigQuery 分析(查询)费用之中。

对于执行检查、评估和预测操作的 BigQuery ML 作业,我们会按照按需查询作业的价格向您收费。由于 CREATE MODEL 查询产生的费用会有不同,因此您必须利用 Stackdriver 审核日志单独计算 CREATE MODEL 作业的费用。通过审核日志,您可以确定 BigQuery ML 服务针对每项 BigQuery ML CREATE MODEL 作业结算的字节数。然后,将此结算字节数与您所在单区域位置或多区域位置的相应 CREATE MODEL 查询费用相乘即可。

例如,要确定在 US 区域执行包含 BigQuery ML CREATE MODEL 语句的查询作业所需的费用,请执行以下操作:

  1. 在 GCP Console 中打开 Stackdriver Logging 页面。

  2. 确认产品设置为 BigQuery。

  3. 点击“按标签过滤或搜索文字”框右侧的下拉箭头,然后选择转换为高级过滤条件。系统随即会将以下文本添加到过滤条件中:

    resource.type="bigquery_resource"
    
  4. 将以下文本添加到 resource.type 行下方:

    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.statementType="CREATE_MODEL"
    
  5. 提交过滤条件按钮的右侧,从下拉列表中选择合适的时间范围。例如,当您选择过去 24 小时时,系统将显示过去 24 小时内完成的 BigQuery ML CREATE MODEL 作业。

  6. 点击提交过滤条件,以显示在给定时间范围内完成的作业。

  7. 填充数据后,点击查看选项并选择修改自定义字段

  8. 添加自定义字段对话框中,输入以下内容:

    protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes
    
  9. 点击保存以更新结果。

  10. 页面更新后,每项 BigQuery ML 作业的结算字节数会显示在该作业的时间戳右侧。如果结算字节数属于免费层级范围,则系统不会显示任何值。例如:

    BigQuery ML 结算字节数

  11. 要计算 BigQuery ML CREATE MODEL 作业的费用,将结算字节数与 BigQuery ML 按需价格相乘即可。在本例中,CREATE MODEL 作业处理了 100873011200 个字节。要计算在 US 多区域位置执行这项作业所需的费用,将结算字节数除以每 TB 字节数,然后再将所得结果与模型创建费用相乘即可:

    100873011200/1099511627776 x $250.00 = $22.94

BigQuery Data Transfer Service 价格示例

示例 1:您有 1 项转移作业,其 3 次运行均于同一天完成。

  • 第一次运行记录了以下唯一 ID:A、B 和 C
  • 第二次运行记录了:A
  • 第三次运行记录了:C 和 D

由于所有运行均在同一天完成,我们会基于 4 个唯一 ID(A、B、C、D)向您收取费用。因为记录了 ID A 和 ID C 的是结束于同一天的两次不同运行,所以 ID A 和 ID C 各仅计一次。如果某个月的每一天都会完成这 3 次转移作业运行,那么您的月度费用基于 4 个唯一 ID 计算。如果转移作业运行完成的次数少于运行当月的天数,系统会按比例计费。

示例 2:您有多项转移作业,且其运行均在同一天完成。

  • 转移作业 1 在运行后记录了以下唯一 ID:A、B 和 C
  • 转移作业 2 在运行后记录了:A
  • 转移作业 3 在运行后记录了:C 和 D

由于唯一 ID 在不同转移作业的运行中均需要计数,因此您需要基于 6 个唯一 ID(转移作业 1 的运行中记录的 A、B 和 C;转移作业 2 的运行中记录的 A;以及转移作业3 的运行中记录的 C 和 D)付费。如果转移作业运行完成的次数少于运行当月的天数,系统会按比例计费。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面