dbt执行报错但Snowflake已生成视图,后续引用脚本被跳过求助
可能的原因及排查方向
- 对象引用路径不对:dbt脚本里引用视图时,没写全
数据库.模式.视图名,或者dbt运行时用的数据库/模式和你手动建视图的不一样。检查脚本里的引用是否带完整限定名,或者核对dbt配置文件里的database、schema参数和视图所在的是否一致。 - 权限不匹配:你手动创建视图用的角色和dbt运行用的角色权限不一样,比如dbt的角色没权限读这个视图,或者没权限在目标模式里创建新对象。可以切换到dbt用的角色,手动跑一遍脚本里的SQL,看会不会报错。
- 依赖关系没配置对:如果后续脚本引用的是你手动建的视图,dbt的依赖图没识别到这个外部对象,导致先跑了引用它的脚本。要么在模型里用
{{ ref('视图名') }}关联依赖,要么在schema.yml里把这个视图定义成dbt的源(source)。 - Snowflake元数据同步延迟:刚建的视图可能需要几秒才能被其他会话识别,等一会儿再重新运行dbt,或者去Snowflake里确认视图确实在正确的数据库和模式下。
- dbt目标环境配错了:
profiles.yml里的目标环境(比如dev/prod)配置错了,dbt连到了另一个Snowflake环境,那里没有你建的视图。检查这个配置文件里的database、warehouse、schema是否正确。
内容的提问来源于stack exchange,提问作者kickpuncher11
相关产品推荐
相关产品推荐

