google-bigquery - 无法在 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 脚本中的其他位置使用。
解决方案
如果查询因过多的 CTE 和视图而变得过于复杂,则可能是时候具体化部分查询了。
这并不理想,但考虑将 CTE 或 VIEW 封装在CREATE OR REPLACE TABLE
. 像 dbt 这样的工具可以在这方面提供很大帮助。
推荐阅读
- javascript - 使类独立于其他类对数组做出反应
- asp.net - ASP.NET Web API - 一些控制器返回 404 状态码
- android - 当 Firebase 分析从关闭状态打开时,Google 分析的 dataCollection 状态会发生什么?
- php - 函数explode的参数#2 $string需要字符串,SimpleXMLElement|null给定
- reinforcement-learning - cs231n lec 14 强化学习
- flutter - 带有播放列表名称的颤振下载文件
- python - 将 JSON 多行文件加载到熊猫数据框中
- python - 如何在 PyQt5 中获得绝对坐标中的 QFrame 位置
- vba - 在 VBA 中为 Word 中的希伯来语字符设置特定字体大小
- android - 如何使用 ADB 命令删除目录内容