从logs.nobids_05限制1中选择DATE(request_time),使我“处理了3.48 GB”,考虑到request_time是出现在每行中的一个字段,这有点多了。
在许多其他情况下,仅触摸列会自动将其总大小添加到成本中。例如,
select * from logs.nobids_05 limit 1
Run Code Online (Sandbox Code Playgroud)
给我“此查询在运行时将处理274 GB”。我确定bigquery不需要读取274GB即可输出1行数据。
2019年更新:如果您将表群集在一起,则a的成本SELECT * LIMIT 1
将降至最低。
使用BigQuery运行“ SELECT * FROM big_table LIMIT 1”等同于执行以下操作:https : //www.youtube.com/watch?v= KZ-slvv_ZT4 。
BigQuery是一个分析数据库。它的体系结构和价格已针对大规模分析进行了优化,而不是针对单行处理。
BigQuery中的每个操作都涉及全表扫描,但仅涉及查询中提到的列。目标是具有可预测的成本:在运行查询之前,您可以知道会涉及多少数据,因此也要知道其成本。仅查询一行似乎是不菲的代价,但可喜的是,即使查询变得更加复杂且占用大量CPU,成本仍然保持不变。
有时您可能需要运行一个单行查询,并且成本似乎过高,但是这里的假设是您正在使用此工具大规模分析数据,并且应该在其中存储数据的总成本为与其他可用工具相比更具竞争力。由于您一直在使用其他工具,因此,我很乐意在实际案例中查看分析会话的总成本比较。
顺便说一句,BigQuery有一个更好的方法可以等效于“ SELECT * LIMIT x”。它是免费的,并且依赖于REST API而不是查询:
https://developers.google.com/bigquery/docs/reference/v2/tabledata/list
话虽这么说,感谢您的反馈,因为在使定价更加复杂和使该工具更适合于其他工作之间存在着一种平衡的工作-这种平衡是建立在我们得到的反馈之上的。
归档时间: |
|
查看次数: |
826 次 |
最近记录: |