Есть ли решение проблем масштабируемости аналитических функций в BigQuery? - PullRequest
0 голосов
/ 26 сентября 2018

Масштабируемость аналитических функций в BigQuery

Серьезным препятствием для перехода нашей команды к BigQuery является проблема масштабируемости аналитических функций.Я прочитал многочисленные ответы здесь, и они либо говорят, что это не может быть сделано, так как сортировка должна быть выполнена в одном слоте [ 1 ] [ 2 ] [ 3 ], до PARTITION [ 1 ] [ 2 ] [ 3 ] или до LIMIT [ 1 ][ 2 ] [ 3 ] [ 4 ] [ 5 ].

Для нас проблема в том, что нам нужнобыть способным делать это без разделения и без ограничений.Мы бы очень предпочли не экспортировать наши данные, выполнять аналитическую функцию в другой программе, а затем каждый раз загружать данные обратно в BigQuery.

Вопросы:

  • Существует ли дорожная карта для улучшения масштабируемости аналитических функций в BigQuery?
  • Можно ли выделить больше памяти, чтобы на одном узле можно было разместить больше данных?

Пример:
Размер таблицы: 3,76 ГБ
Два столбца: UNIQUE_ID & SALES
140 миллионов строк

    SELECT 
        UNIQUE_ID
        , SALES
        , NTILE(10) OVER (ORDER BY SALES ASC) AS SALES_DECILE
    FROM `project.dataset.table`

Ошибка: Resources exceeded during query execution: The query could not be executed in the allotted memory. OVER() operator used too much memory.

Для моих целей, не иметь ровно 10% записей в каждом дециле - это нормально, поэтому APPROX_QUANTILES() добивается цели, но я не уверен, что это нормально с другими командами.Вопросы все еще остаются, когда дело доходит до других аналитических функций, которые нуждаются в точном количестве.Например, мне нужно ROW_NUMBER() OVER() каждой записи в таблице 140 миллионов строк с одним уникальным атрибутом ID, который не является числовым, поэтому я вообще не могу PARTITION.В противном случае, я бы полностью сделал это предложение .

...