我想知道在通过 Web 用户界面运行查询时是否可以限制 bigquery 查询大小?
我的想法只是测试查询,而不是查询我的所有表;我只想查询其中的一部分,例如多行。
限制并没有优化我的查询成本,所以想法是找到一个类似于“row_number”或“fetch”的函数。
抱歉,我是营销人员而不是开发人员,所以提前感谢您的帮助。
我想知道在通过 Web 用户界面运行查询时是否可以限制 bigquery 查询大小?
我的想法只是测试查询,而不是查询我的所有表;我只想查询其中的一部分,例如多行。
限制并没有优化我的查询成本,所以想法是找到一个类似于“row_number”或“fetch”的函数。
抱歉,我是营销人员而不是开发人员,所以提前感谢您的帮助。
如何限制 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 -最小化行数。这样做的能力实际上取决于您的表是如何加载数据的。如果表加载增量 - 您可以使用所谓的表装饰器。
注意 - 此技术适用于过去 7 天内的表格
例如,下面将仅扫描一小时前表中的数据(所谓的快照装饰器)
SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170212@-3600000]
这适用于最近一天的桌子,尤其是在桌子大小还不太大的一天开始时
因此,为了进一步限制,您可以使用以下版本(所谓的范围装饰器) - 为您提供一小时到半小时前添加的数据
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 中的选项下设置目标表。