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

问题描述 投票:2回答:2

我目前正在尝试在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 

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

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

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


0
投票
I've been through exactly the same problem,我真的想要ORDER BY,所以Jordan Tigani的答案不是一个选择。

  1. 运行不带ORDER BY的查询并保存在数据集表中。
  2. 使用通配符(BUCKETNAME / FILENAME * .csv)将该表中的内容导出到GCS的存储桶中
  3. 将文件下载到计算机中的文件夹。
  4. 安装XAMPPif you get a UAC warning)和change some settings之后。
  5. 在XAMPP控制面板中启动Apache和MySQL。
  6. 安装HeidiSQL并稳定与MySQL服务器的连接(已安装XAMPP)
  7. 创建数据库和具有其字段的表。
  8. Go to Tools > Import CSV file, configure accordingly和导入。
  9. 一旦导入了所有数据,请执行ORDER BY并导出表。
© www.soinside.com 2019 - 2024. All rights reserved.