在BiqQuery中按具有大数据的分位数进行分组

时间:2019-05-03 10:08:12

标签: google-bigquery window-functions percentile standard-sql

我有一个庞大的数据集,其中包含数百万行的值x和y,并希望获得x的不同分位数的avg(y)。我可以做到的一种方法是以下代码。但是,使用大型数据集rank()时,它过于密集,并且BigQuery中出现内存使用错误。

SELECT 
cast(100 * ord / num_rows as INT64) percentile,
AVG(y)
FROM
(
      SELECT
      rank() over order by ord, 
      count(*) over () num_rows ,
      y
)
GROUP BY 1
FROM table

我知道窗口函数对于大型数据集来说是昂贵的,但是由于我只对低粒度的存储桶百分位数感兴趣,因此在计算上这应该是可能的。有没有办法在BQ中实现这一目标?

0 个答案:

没有答案