使用FLATTEN进行SQL调用导致的“错误:查询执行期间超出了资源”

Nat*_*yne 2 google-bigquery

我目前正在尝试在BigQuery中运行以下SQL脚本(目的是将表保存出去),但是在没有行返回大小限制的情况下启动查询后,却遇到了与容量相关的SQL处理错误。该错误是常见的错误:“错误:查询执行期间超出了资源。”

SELECT date, 
       Concat(fullvisitorid, String(visitid)) AS unique_visit_id, 
       visitid, 
       visitnumber, 
       fullvisitorid, 
       totals.pageviews, 
       totals.bounces, 
       hits.page.pagepath, 
       hits.page.pagetitle, 
       device.devicecategory, 
       device.browser, 
       device.browserversion, 
       hits.customvariables.index, 
       hits.customvariables.customvarname, 
       hits.customvariables.customvarvalue, 
       hits.time 
FROM   (Flatten([XXXXXXXX.ga_sessions_20140711], hits.time)) 
WHERE  hits.customvariables.index = 4 
ORDER  BY unique_visit_id DESC, 
          hits.time ASC 
Run Code Online (Sandbox Code Playgroud)

为该作业提供的作业ID为:ua-web-analytics:job_60fxNnmo9gZ23kaji50v3qH9dXs。我已经阅读了有关这些错误的主题的其他文章,例如这篇文章重点介绍了在完成连接时观察到的资源错误。我怀疑当前的问题在于使用FLATTEN,并且正在通过一些不同的方法进行工作。就是说,我很担心,因为将来此查询可能一起运行30天或60天(而现在我正在制作原型的那一天只是一天),这将极大地将数据大小增加到500GB以上至1TB。上面查询的目的是生成一个表,我可以将其保存下来然后进行操作。不幸的是,以临时方式进行此操作似乎有些问题。其他人在使用类似的SQL查询时是否遇到资源限制?就上下文而言,要查询的表的大小约为17.2 GB,仅有一百万行。

Jor*_*ani 5

如@ Pentium10所述,设置允许大结果将允许您从扁平化查询中返回大结果。通常,您应该使用“允许大结果”的信号是您看到“结果太大”错误。

但是,查询的另一部分是不可并行的:ORDER BY操作。这是必需的吗?通常,我们发现在大多数情况下,当ORDER BY在大型表上使用时,人们真正想要的是ORDER BY ... LIMIT(可以高效且并行地完成)。或者他们只是添加ORDER BY,因为这样可以更轻松地查看结果。如果您可以删除ORDER BY它,则可能会随着数据大小的增加而使查询更快并且扩展性更好。


归档时间:

查看次数:

3105 次

最近记录:

5 年,10 月 前