【问题标题】:Window functions and allow large results窗口函数并允许大结果
【发布时间】:2014-09-10 04:52:01
【问题描述】:

窗口函数文档指出不能使用窗口函数生成大查询结果:

https://developers.google.com/bigquery/query-reference#windowfunctions

对于大型查询结果,该语句在文档中重复:

https://developers.google.com/bigquery/querying-data#largequeryresults

我创建了一个使用窗口函数并创建大量结果的查询。感兴趣的查询可以在下面找到,它运行在标准的 Google Analytics 数据提取到 BigQuery 中。

当我运行此查询时,它会返回“响应太大而无法返回”消息。指定“允许大结果”似乎可以解决问题。所以我在这个查询中同时使用窗口函数和大结果。

这似乎与窗口函数不能用于生成大查询结果的说法不一致。有人可以帮我理解这句话的意思吗?

SELECT 
CONCAT(fullVisitorId, STRING(visitId)) AS fullVisitID,
hits.hitNumber as Sequence,
hits.page.pagePath as PagePath,
LAG(Pagepath, 1) OVER 
  (PARTITION BY fullVisitID ORDER BY Sequence Asc) AS PrePage,
LEAD(Pagepath, 1) OVER 
  (PARTITION BY fullVisitID ORDER BY Sequence Asc) AS PostPage
FROM [<<TABLE NAME>>]
WHERE hits.type= 'PAGE'

【问题讨论】:

  • 这意味着从 BQ 控制台的高级选项中选择“允许大结果”或从命令行中选择 bq --allow_large_results 时无法工作。

标签: google-bigquery


【解决方案1】:

这是以比文档更快的速度改进的产品。

最初窗口函数不可并行化,因此与“允许大结果”(通过并行输出工作)不兼容。然而,BigQuery 现在能够在使用 PARTITION 关键字时并行化窗口函数查询 - 因此该查询现在可以工作。

请注意,每个分区不能太大而无法正常工作。

【讨论】:

  • 您是否有“太大”的等价数字?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 2012-02-24
  • 2011-03-07
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
相关资源
最近更新 更多