首页 > 解决方案 > 无法在 BigQuery 中运行多个 CTE

问题描述

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

标签: google-bigquerycommon-table-expression

解决方案


如果查询因过多的 CTE 和视图而变得过于复杂,则可能是时候具体化部分查询了。

这并不理想,但考虑将 CTE 或 VIEW 封装在CREATE OR REPLACE TABLE. 像 dbt 这样的工具可以在这方面提供很大帮助。


推荐阅读