窗口功能并允许大的结果

时间:2014-09-09 11:57:36

标签: google-bigquery

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

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'

1 个答案:

答案 0 :(得分:1)

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

最初窗口函数不可并行化,因此不兼容&#34;允许大的结果&#34; (通过并行输出工作)。但是,BigQuery现在能够在使用PARTITION关键字时并行化窗口函数查询 - 因此该查询现在可以正常工作。

请注意,每个分区都不能太大,无法使用。