如何优化 Google Big Query 计费字节数

Posted

技术标签:

【中文标题】如何优化 Google Big Query 计费字节数【英文标题】:How to Optimize Google Big Query Bytes Billed 【发布时间】:2018-11-21 22:13:42 【问题描述】:

我最近发现了 Google Big Query,它是开放数据集。对new_york 数据集中的311_service requests 表执行以下查询后,云控制台将bytes billed 报告为130 MB

SQL 查询:

SELECT unique_key FROM `bigquery-public-data.new_york.311_service_requests` LIMIT 10

查询返回:

+------+-------------+
| Rows | unique_key  |
+------+-------------+
| 1    | 37911459    |
| 2    | 38162601    |
| 3    | 32560181    |
| 4    | 38259076    |
| 5    | 36034528    |
| 6    | 36975822    |
| 7    | 38028455    |
| 8    | 37993135    |
| 9    | 37988664    |
| 10   | 35382611    |
+------+-------------+

对于返回如此少量数据的查询,为什么字节计费的值为 130 MB?

有没有办法优化这个?查询的结果是否应该存储在另一个数据库中以供以后检索?

【问题讨论】:

【参考方案1】:

为什么按 130 MB 计费的字节数?

查询定价是指运行 SQL 命令和用户定义函数的成本。 BigQuery 使用一种指标对查询收费:处理的字节数(也称为读取的字节数)。无论数据是存储在 BigQuery 中还是存储在 Cloud Storage、Google Drive 或 Cloud Bigtable 等外部数据源中,您都需要为处理的字节数付费。

当您运行查询时,即使您对结果设置了明确的 LIMIT,也会根据您选择的列中处理的总数据向您收费。每列的总字节数是根据列中的数据类型计算的。有关我们如何计算您的数据大小的更多信息,请参阅数据大小计算。

查询定价基于您的使用模式:查询的每月固定费率或基于交互式查询的定价。企业客户通常更喜欢查询的统一费率定价,因为该模型提供一致的月度成本。按需(或交互式)定价提供了灵活性,并且完全基于使用情况。

你可以在https://cloud.google.com/bigquery/pricing看到更多

因此,在您的情况下,130MB 是相应 unique_key 列的大小

是否应该将查询结果存储在另一个数据库中以供以后检索?

确定 您可以这样做来管理不接触原始数据的连续处理小数据的成本 请记住-这将为您调用存储价格-有关详细信息,请参见上述相同的链接

【讨论】:

谢谢米哈伊尔。是否还有其他可以降低成本的查询技术? 当然——你可以查看BigQuery Best Practices: Controlling Costs,在特定的用例中你会进入——只需发布新问题,我们会帮助你

以上是关于如何优化 Google Big Query 计费字节数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Big Query 中总结月份?

如何将 Google Cloud SQL 与 Google Big Query 集成

如何将 Google 工作区数据自动导入 Big Query 数据库?

如何在 Google Big Query 中的多个列上执行模式功能

如何在 google Big Query 上添加页面浏览量维度?

如何将 .gz 文件上传到 Google Big Query?