我目前正在尝试在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,仅有一百万行。
如@ Pentium10所述,设置允许大结果将允许您从扁平化查询中返回大结果。通常,您应该使用“允许大结果”的信号是您看到“结果太大”错误。
但是,查询的另一部分是不可并行的:ORDER BY
操作。这是必需的吗?通常,我们发现在大多数情况下,当ORDER BY
在大型表上使用时,人们真正想要的是ORDER BY ... LIMIT
(可以高效且并行地完成)。或者他们只是添加ORDER BY,因为这样可以更轻松地查看结果。如果您可以删除ORDER BY
它,则可能会随着数据大小的增加而使查询更快并且扩展性更好。
归档时间: |
|
查看次数: |
3105 次 |
最近记录: |