我使用Google BigQuery在我的应用程序中存储用户数据活动。
我在BigQuery中创建了一个表,让我们称之为"user_activities_data“。
此数据包括许多数据用户活动,这些活动总是每秒钟更新一次。每秒钟都会有数千个新的数据插入到表中。
我对这张表做了很多查询。
我知道,BigQuery是由您在每次查询中使用的数据量来确定的。我已经尝试优化我的查询,以使用尽可能低的数据大小(通过选择只需要的列)。
例如:
SELECT username,activity FROM user_activities_data WHERE date_activities>='2016-10-01' and date_activities<='2016-10-31'但是因为每天我的数据数量总是在增加,价格也变得越来越高。即使我使用相同的查询,也有相同的where限制(如上面的查询示例)。
那么,我的问题是,优化定价的最优方式是什么?
上个月,对于每个查询,我将收取0.2美元左右的费用,而这个月,由于我的数据量翻了一番,我每次查询的账单都是0.4美元。我每天都会查询数百次,这样如果管理不好的话,价格就会很高。
我有几种选择:
我愿意听取任何建议:)
非常感谢
发布于 2016-11-07 07:38:25
您需要使用分区表。
例如,您需要创建一个按日分区的表。然后您可以将类似于这个mydataset.table$20160519的数据写入到每天的数据中,然后进行如下查询:
SELECT
field1
FROM
mydataset.partitioned_table
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP("2016-05-01")
AND TIMESTAMP("2016-05-06")正如您所看到的,伪列_PARTITIONTIME是将查询限制为只访问分区的方法。这意味着查询价格将只计算在所述日期间隔期间所触及的数据,而不是整个表。这也不能阻止您执行完整的表查询。
https://stackoverflow.com/questions/40459449
复制相似问题