Google bigquery 无法在BigQuery中运行多个CTE

Google bigquery 无法在BigQuery中运行多个CTE,google-bigquery,common-table-expression,Google Bigquery,Common Table Expression,我正在尝试运行多个CTE,我得到的错误是 “查询执行期间超出了资源:没有足够的资源用于查询规划-子查询太多或查询太复杂” 我看过关于这个错误的文章/解决方案,但没有一篇适用于我的代码,因为我没有进行自连接/创建复杂的递归 我的CTE是这样的 WITH CTE1 AS ( SELECT "COLS" FROM "BLAH" ) , CTE2 AS ( SELECT * FROM CTE1 ) , CTE3 AS ( SELECT *

我正在尝试运行多个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脚本的其他地方使用。

如果查询变得太复杂,CTE和视图太多,那么可能是时候具体化部分查询了


不理想,但考虑封装CTE或视图后面的<代码>创建或替换表< /代码>。dbt之类的工具可以在这方面提供很大帮助。

如果查询变得太复杂,包含太多CTE和视图,那么可能是时候具体化部分查询了


不理想,但考虑封装CTE或视图后面的<代码>创建或替换表< /代码>。像dbt这样的工具在这方面很有帮助。

您的CTE中有订单吗?这是消耗不必要计算能力的常见罪魁祸首。您的CTE中有任何排序吗?这经常是消耗不必要的计算能力的罪魁祸首。