dbt Cloud升级至0.20.2后dbt_modules内vars无法识别问题咨询
根因说明
dbt 0.20.2版本官方调整了依赖包变量加载逻辑:不再默认将dbt_modules目录下安装的依赖包的dbt_project.yml中声明的vars纳入全局变量空间,目的是避免不同依赖包的同名变量冲突,这个是版本迭代引入的定向变更,你遇到的报错就是该变更导致的。
可行解决方案
- 方案1:补充根项目变量声明
将你用到的依赖包dbt_project.yml中vars块的所有配置,复制到你自己项目根目录的dbt_project.yml的vars层级下即可。针对你当前的报错,直接在根目录vars中添加google_ads__click_performance: <包默认值>即可,默认值可以直接去dbt_modules下对应google ads包的dbt_project.yml里查询。 - 方案2:升级dbt版本
官方在后续0.21.0及更高稳定版本中优化了该逻辑,恢复了「优先读取依赖包自身声明的默认变量,根项目声明的同名变量才会覆盖包默认值」的加载规则,无需修改任何变量配置,直接将dbt Cloud版本切换到0.21.0及以上即可恢复原有使用逻辑。 - 方案3:回退到0.20.1版本
如果当前项目暂时不支持升级更高版本,直接在dbt Cloud项目设置中将运行版本切回0.20.1即可恢复正常。
验证方法
调整完成后,运行dbt compile或者直接预览触发报错的staging模型,确认不再报变量缺失错误即可。
内容的提问来源于stack exchange,提问作者Jaafar
相关产品推荐
相关产品推荐

