Как показано на скриншоте, который вы предоставили - вы имеете дело с разрывным соединением.
В этом случае шаг 3 занимает 1,3 миллиона строк и дает 459 миллионов строк.Шаги с 04 по 0B связаны с перераспределением и перестановкой всех этих дополнительных данных - поскольку запрос не предоставил достаточно ресурсов для обработки такого количества строк: он увеличен с 1 параллельного ввода до 10 000!
Выу вас есть 2 варианта: либо избегайте взрывающихся соединений, либо предполагайте, что для взрывающихся соединений потребуется много времени.Но, как объяснено в вопросе - вы уже знали, что!
Как насчет того, чтобы сгенерировать все дополнительные строки в одной операции (выполнить объединение, материализоваться), а затем запустить другой запрос для обработки 459 миллионов строк?Первый запрос будет медленным по объясненным причинам, но второй будет выполняться быстро, поскольку BigQuery выделит достаточно ресурсов для обработки такого количества данных.