如何在dbt docs generate中排除dbt_packages内的codegen和dbt_utils包?
解决dbt文档中显示codegen和dbt_utils包节点的问题
正确的排除方法
临时命令行排除
执行文档生成命令时,直接通过--exclude参数指定要排除的包名称:
dbt docs generate --exclude package:codegen package:dbt_utils
之后运行dbt docs serve,打开的文档就不会包含这两个包的内容。
永久配置排除
如果不想每次执行命令都加参数,可在项目根目录的dbt_project.yml中添加以下配置:
docs: exclude: - package: codegen - package: dbt_utils
保存配置后,直接执行dbt docs generate和dbt docs serve即可生效。
为什么之前的方法无效?
- 将dbt_packages加入model-paths:该操作本身错误,model-paths用于指定项目自有模型的路径,包的路径无需加入。dbt会自动处理包依赖,但强制加入后,会把包的配置文件当作项目模型配置解析,而包的yml文件中
version字段通常是语义化版本(如1.1.0),不符合项目模型要求的整数版本,因此报错。 - 在dbt_packages中添加properties.yml:包的文档由自身配置文件控制,在包目录添加自定义properties.yml不会改变项目文档的包含逻辑,因此无效果。
- 使用tag:packages语法:默认情况下,codegen和dbt_utils包的节点不会带有
packages标签,选择器无法匹配到任何节点,导致报错。正确的选择器应基于包名(package:xxx)指定排除范围。
内容的提问来源于stack exchange,提问作者garidisk
相关产品推荐
相关产品推荐

