首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌BigQuery价格优化

谷歌BigQuery价格优化
EN

Stack Overflow用户
提问于 2016-11-07 06:59:26
回答 1查看 246关注 0票数 1

我使用Google BigQuery在我的应用程序中存储用户数据活动。

我在BigQuery中创建了一个表,让我们称之为"user_activities_data“。

此数据包括许多数据用户活动,这些活动总是每秒钟更新一次。每秒钟都会有数千个新的数据插入到表中。

我对这张表做了很多查询。

我知道,BigQuery是由您在每次查询中使用的数据量来确定的。我已经尝试优化我的查询,以使用尽可能低的数据大小(通过选择只需要的列)。

例如:

代码语言:javascript
复制
SELECT username,activity FROM user_activities_data WHERE date_activities>='2016-10-01' and date_activities<='2016-10-31'

但是因为每天我的数据数量总是在增加,价格也变得越来越高。即使我使用相同的查询,也有相同的where限制(如上面的查询示例)。

那么,我的问题是,优化定价的最优方式是什么?

上个月,对于每个查询,我将收取0.2美元左右的费用,而这个月,由于我的数据量翻了一番,我每次查询的账单都是0.4美元。我每天都会查询数百次,这样如果管理不好的话,价格就会很高。

我有几种选择:

  1. 在BigQuery使用每日分区选项,但我不知道是否正确,定价(按处理数据的数量)是相同的。(我在这方面做错了什么吗?)
  2. 每月将表划分为多个表,如: user_data_activities_oct16、user_data_activities_nov16等。注意:有时我需要在几个月之间查询数据,比如2016年8月31日至2016年11月5日的用户活动数据,这是一个好的解决方案吗?

我愿意听取任何建议:)

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 07:38:25

您需要使用分区表

例如,您需要创建一个按日分区的表。然后您可以将类似于这个mydataset.table$20160519的数据写入到每天的数据中,然后进行如下查询:

代码语言:javascript
复制
SELECT
  field1
FROM
  mydataset.partitioned_table
WHERE
  _PARTITIONTIME BETWEEN TIMESTAMP("2016-05-01")
  AND TIMESTAMP("2016-05-06")

正如您所看到的,伪列_PARTITIONTIME是将查询限制为只访问分区的方法。这意味着查询价格将只计算在所述日期间隔期间所触及的数据,而不是整个表。这也不能阻止您执行完整的表查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40459449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档