价格

BigQuery 提供可调节的灵活价格选项,更加贴合您的项目和预算。

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

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

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

  • 按需 - 最灵活的选项。按需查询价格仅按使用量计算。
  • 固定费率 - 企业客户通常更愿意采用固定查询价格,因为这种模式提供的月度费用是固定的,并且可预测。

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

价格摘要

下表汇总了 BigQuery 的价格。这些操作必须遵循 BigQuery 的配额和限制

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
操作 价格 详情
活跃存储 每月前 10 GB 免费。详情请参阅存储价格
长期存储 每月前 10 GB 免费。详情请参阅存储价格
流式插入 您需要为成功插入的行支付费用。单行最小计为 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 提供了一些免费资源,但使用量不能超过特定限额。这些免费资源的使用量限额在免费试用期间及试用结束后均有效。如果超过这些使用量限额且免费试用期已过,您将需要根据本页中列出的价格支付费用。

免费的 BigQuery 资源如下所示:

  • (每个结算帐号)每月免费存储前 10 GB 数据
  • (每个结算帐号)每月免费处理前 1 TB 查询数据

查询价格

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

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

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

按需价格

按需查询价格如下所示:

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
操作 价格 详情
查询(分析) 每月免费处理前 1 TB 数据。 如果客户的查询量较大,并且其更愿意每月支付稳定的费用,也可选择固定价格

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

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

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

按需查询费用控制条件

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

固定价格

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

BigQuery 会根据客户的历史记录、使用情况和支出,自动管理槽配额。对于需要每月分析支出保持不变的客户,BigQuery 提供了多种方法来增加分配的槽数。

固定价格:

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

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
每月费用 槽数 额外槽数
2000

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

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

存储价格

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

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

活跃存储

活跃存储费用如下所示:

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
存储类型 价格 详情
活跃存储 每月免费存储前 10 GB。

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

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

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

长期存储

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

长期存储价格如下所示:

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
存储类型 价格 详情
长期存储 每月免费存储前 10 GB。

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

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

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

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

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

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

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

数据大小计算

当您将数据加载到 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 个字节 + 包含的字段的大小

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

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

流式传输价格

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

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

美国(多区域) 欧盟(多区域) 东京 (asia-northeast1)
按月
操作 价格 详情
流式插入 您需要为成功插入的行支付费用。单行最小计为 1 KB。

BigQuery ML 预览版价格

BigQuery ML 的价格仍在制定中。要查看价格公告,请参阅 BigQuery 产品页面

目前,如果您按需使用 BigQuery,则 BigQuery ML 费用按每个查询所处理的数据量计算。对于 BigQuery ML 查询,所处理的数据量通常高于 CREATE MODEL 语句的输入数据。在 2019 年 7 月 31 日之前,使用固定费率的客户可以将其现有的槽用于 BigQueryML。

数据操纵语言 (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 会分别收取各个过滤条件下相应块中列的扫描费用。

集群表价格示例

您有一个名为 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 Data Transfer Service 价格

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

源应用 每月费用(按比例)
Google Ads

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

DoubleClick Campaign Manager

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

DFP 广告管理系统

每个网络 ID $100

Google Play

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

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

YouTube 频道

2018 年 7 月 31 日之前免费。自 2018 年 8 月 1 日起生效的价格为:
每个频道 $5

YouTube 内容所有者

2018 年 7 月 31 日之前免费。自 2018 年 8 月 1 日起生效的价格为:
每 1000 个唯一频道 $5(每个唯一频道 $0.005)- content_owner_basic_a3 表中的频道 ID。

在数据传输至 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 中的总字节数

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)付费。如果传输运行完成的次数少于运行当月的天数,系统会按比例计费。

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

发送以下问题的反馈:

此网页