FIRST_VALUE窗口函数 - 查询执行期间超出资源

时间:2017-07-12 16:14:33

标签: google-bigquery

从包含部门,人员和网址的表格中。想为部门和个人的每个组合选择样本网址。

select dept,person,FIRST_VALUE(url) OVER (PARTITION BY dept,person ORDER BY url) from cs.dept_person_url 

上述查询失败,错误:在查询执行期间超出资源。

READ  
$1, $2, $3
FROM __SHUFFLE0
SORT  
$1 ASC, $2 ASC, $3 ASC
ANALYTIC FN  
FIRST_VALUE($13) OVER (PARTITION BY $11, $12 ORDER BY $13 ASC RANGE BETWEEN UNBOUNDED PRECEDING AND [...]
WRITE  
$14, $15, $10
TO __SHUFFLE1

失败的阶段有:

Input Rows: 54,344,863 
Output Rows: 48,536,071

请建议任何可行的替代方法。

2 个答案:

答案 0 :(得分:2)

试试这个:

#standardSQL
select dept, person, ANY_VALUE(url)
from cs.dept_person_url 
group by dept, person

这是因为您需要任何URL,并要求OVER(ORDER BY)强制对分区中的所有URL进行排序 - 这对于为每个URL获取样本来说太过分了。

答案 1 :(得分:2)

是否有原因

SELECT dept, person, FIRST(url)
FROM cs.dept_person_url
GROUP BY dept, person

不提供你想要的东西?警告 - 我习惯使用Google Big Query的legacy-sql而不是standard-sql