如何限制 BigQuery 查询大小以通过 Web 用户界面测试查询样本?

How to limit BigQuery query size for testing a query sample through the web user-interface?

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

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

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

抱歉,我是营销人员,不是开发人员,所以在此先感谢您的帮助。

How to limit BigQuery query size for testing ... ?

1 - 尝试尽量减少测试中涉及的 tables 的数量 在您的查询中 – 2016-12-11 和现在

之间的日期分别涉及 60 多个 table
SELECT <fields_list> FROM
TABLE_DATE_RANGE([XXX:85801771.ga_sessions_],
  TIMESTAMP('20161211'),
  TIMESTAMP('20170315'))

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

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

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

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

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

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

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

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

最后,@0 是一个特例,它引用了 table 可能最早的快照:过去 7 天,或者 table 的创建时间,如果table 不到 7 天。例如

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

3 - 针对 采样 Table 进行测试。如果您希望一次又一次地试验您的查询 - 您可以首先准备缩小版本的 table,其中包含您需要的行数,并应用适合您的业务逻辑的采样逻辑。要限制行数,您可以使用 LIMIT Clause. To get random rows you can use RAND 函数,例如
在采样 table 准备好后 - 运行 你对它的所有查询直到你有最终版本 - 在此之后 - 你可以 运行 它对你原来的 table(s)
顺便说一句,要创建采样 table,您需要在 Web UI 中的选项下设置目标 table。