Группировка по квантилям с большими данными в BiqQuery - PullRequest
1 голос
/ 03 мая 2019

У меня большой набор данных из миллионов строк со значениями x и y, и я хочу получить avg (y) в разных квантилях x.Один из способов сделать это - следующий код.Но с большим набором данных rank () это слишком интенсивно, и я получаю ошибку использования памяти в BigQuery.

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

Я понимаю, что оконные функции дороги для больших наборов данных, но, поскольку меня интересует только процентиль с разбивкой по пакетам при малой гранулярности, в вычислительном отношении это должно быть возможно.Есть ли способ добиться этого в BQ?

...