【问题标题】:How to limit BigQuery query size for testing a query sample through the web user-interface?如何限制 BigQuery 查询大小以通过 Web 用户界面测试查询样本?
【发布时间】:2017-06-30 07:56:52
【问题描述】:

我想知道在通过 Web 用户界面运行查询时是否可以限制 bigquery 查询大小?

我的想法只是测试查询,而不是查询我的所有表;我只想查询其中的一部分,例如一些行。

限制并没有优化我的查询成本,所以想法是找到一个类似于“row_number”或“fetch”的函数。

对不起,我是营销人员而不是开发人员,所以提前感谢您的帮助。

【问题讨论】:

  • 请发布查询并告知实际尺寸/成本。没有查询,只有预览模式是免费的。
  • SELECT SUM(t0.totals.visits) AS t0._totals.visits_, t0.geoNetwork.country, t0.userId FROM (SELECT * FROM TABLE_DATE_RANGE(XXX:85801771.ga_sessions_], TIMESTAMP(' 20161211'), TIMESTAMP('20170315'))) AS t0 GROUP EACH BY t0.geoNetwork.country, t0.userId ORDER BY t0._totals.visits_DESC;
  • 查询完成(经过 5.7 秒,已处理 314 MB)成本取决于数据的处理方式以及每天启动查询的时间。感谢 Pentium10 的帮助
  • 这里没有太多需要优化的地方,已经使用了314MB,非常低。请注意,在 BigQuery 上,每月 1TB 查询分析是免费的,然后 TB 费用为 5 美元。我认为我们应该在花费太多之后讨论优化查询。

标签: google-bigquery query-optimization cost-based-optimizer cost-management


【解决方案1】:

如何限制 BigQuery 查询大小以进行测试...?

1 - 尝试尽量减少测试中涉及的表格数量 在您的查询中 - 分别涉及 2016 年 12 月 11 日和现在之间的日期的 60 多个表

SELECT <fields_list> FROM
TABLE_DATE_RANGE([XXX:85801771.ga_sessions_],
  TIMESTAMP('20161211'),
  TIMESTAMP('20170315'))

相反,您可以使用同一天作为时间范围的开始和结束日期,从而大大减少涉及的表的数量(减少到只有一个表)和整体扫描大小。例如

SELECT <fields_list> FROM
TABLE_DATE_RANGE([XXX:85801771.ga_sessions_],
  TIMESTAMP('20161211'),
  TIMESTAMP('20161211'))

2 - 最小化行数。这样做的能力实际上取决于您的表是如何加载数据的。如果表格以增量方式加载 - 您可以使用所谓的 table decorators
注意 - 此技术适用于过去 7 天内的表格

例如,下面将仅扫描一小时前表中的数据(所谓的snapshot decorator

SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170212@-3600000]  

这适用于最近一天的表格,尤其是在表格大小还不太大的一天开始时

因此,为了进一步限制,您可以使用以下版本(所谓的range decorator) - 为您提供一小时到半小时前添加的数据

SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170212@-3600000--1800000]  

最后,@0 是一个特例,它引用表的最旧快照:过去 7 天,或者如果表小于 7 天,则为表的创建时间。例如

SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170210@0]  

3 - 针对抽样表进行测试。如果您希望一次又一次地试验您的查询 - 您可以首先准备缩小版本的表,其中包含您需要的尽可能多的行,并应用适合您的业务逻辑的采样逻辑。要限制行数,您可以使用LIMIT Clause。例如,要获取随机行,您可以使用 RAND 函数
准备好采样表后 - 对它运行所有查询,直到获得最终版本 - 在此之后 - 您可以对原始表运行它
顺便说一句,要创建采样表,您需要在 Web UI 的选项下设置目标表。

【讨论】:

  • 到目前为止,我没有投票权或任何投票权,只是想告诉你它有很大帮助:-)
  • @sPujade - 谢谢你告诉我,我认为 15 给了你这个特权。你试过了吗?
  • 很遗憾目前还没有:-(
  • 感谢米哈伊尔的帮助。堆栈不是用户友好的;所以阅读你的文档;它有助于更​​好地了解它的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多