如何保留profile.yml数据库配置时让DBT日志显示完整模型名
解决方法
要在保留profile.yml中database配置的前提下,让dbt日志显示完整的模型名称(database.schema.alias格式),可以通过自定义宏覆盖dbt默认的关系名称生成逻辑:
- 在项目的
macros目录下新建一个宏文件(比如custom_logging.sql) - 写入以下宏代码,强制日志输出包含数据库名的完整关系路径:
{% macro get_relation_name(relation) %} {% if relation.database %} {{ relation.database }}.{{ relation.schema }}.{{ relation.identifier }} {% else %} {{ relation.schema }}.{{ relation.identifier }} {% endif %} {% endmacro %}
dbt默认的get_relation_name宏会在数据库名与target.database(即profile里配置的数据库)一致时自动省略它,上面的自定义宏会跳过这个判断,只要关系存在数据库属性就完整输出。
这个修改只会影响日志中的显示内容,不会改变模型的物化逻辑,完全符合需求——既保留profile的数据库配置,又能在日志里看到完整的模型名。
内容的提问来源于stack exchange,提问作者mad_
相关产品推荐
相关产品推荐

