DBT(Data Build Tools)部署时如何取消模型默认添加的数据库前缀
DBT取消模型SQL自动添加数据库名前缀的配置方法
要移除DBT生成模型SQL时默认拼接的数据库名前缀,可根据需求选择以下配置方案:
- 全局生效配置
覆盖DBT自带的generate_database_name宏即可实现全局取消数据库前缀,操作如下:- 在项目
macros/目录下新建自定义宏文件,例如custom_database_macro.sql - 写入以下宏代码:
没有自定义数据库配置时宏会返回空值,DBT生成SQL时就会自动省略数据库前缀。{% macro generate_database_name(custom_database_name=none, node=none) -%} {%- if custom_database_name is none -%} {{ return('') }} {%- else -%} {{ return(custom_database_name) }} {%- endif -%} {%- endmacro %} - 在项目
- 单模型生效配置
仅需给特定模型取消前缀的话,直接在对应模型的配置块中设置database参数为空即可:{{ config( database = '', materialized = 'table' ) }} -- 此处写模型业务逻辑 select * from your_source - 特定数据仓库适配配置
如果你使用BigQuery、Snowflake等云数仓,还可以直接在dbt_project.yml中添加全局变量关闭完全限定名生成:
也可在vars: disable_qualified_name: trueprofiles.yml的对应部署目标配置项中添加database: null实现相同效果。
配置完成后执行dbt compile命令,查看target/目录下生成的SQL文件,确认数据库前缀已移除即可正式部署。
内容的提问来源于stack exchange,提问作者user961
相关产品推荐
相关产品推荐

