Невозможно запустить несколько CTE в BigQuery - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь запустить несколько CTE и получаю сообщение об ошибке: «Ресурсы превышены во время выполнения запроса: недостаточно ресурсов для планирования запросов - слишком много подзапросов или запрос слишком сложен»

Я просмотрел статьи / решения для этой ошибки, но ни одно из них не применимо к моему коду, так как я не выполняю самостоятельные соединения / не создаю сложные рекурсии.

Мои CTE примерно такие.

WITH CTE1 AS
(
  SELECT "COLS"
  FROM "BLAH" 
)
, CTE2 AS
(
  SELECT *
  FROM CTE1
)
, CTE3 AS
(
  SELECT *
  FROM CTE2
)
, CTE4 AS 
(
  SELECT *
  FROM CTE3
)
, CTE5 AS
(
  SELECT *
  FROM CTE4
)
SELECT *
FROM CTE5

Обычно около CTE4 я начинаю получать упомянутую выше ошибку. Этот код используется в представлении, которое затем используется в другом скрипте BigQuery.

1 Ответ

0 голосов
/ 10 июля 2020

Если запрос становится слишком сложным со слишком большим количеством CTE и представлений, возможно, пришло время материализовать часть вашего запроса.

Это не идеально, но рассмотрите возможность инкапсуляции CTE или VIEW за CREATE OR REPLACE TABLE. Такие инструменты, как dbt, могут очень помочь в этом.

...