You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dbt中通过{{ this }}引用模型SQL文件所在文件夹?

在dbt中获取模型SQL文件所在文件夹的方法

dbt的this对象没有直接提供folder属性,但可以通过以下两种方法获取模型文件所在的文件夹路径:

  • 方法一:拆分路径提取文件夹
    this.path会返回当前模型文件相对于项目根目录的完整路径(例如models/marts/sales/fact_sales.sql),通过Jinja的字符串拆分和拼接操作,去掉路径末尾的文件名部分即可得到文件夹路径:
{% set path_segments = this.path.split('/') %}
{% set model_folder = '/'.join(path_segments[:-1]) %}

select
    '{{ model_folder }}' as model_folder,
    '{{ this.path }}' as full_file_path
  • 方法二:字符串替换移除文件名
    利用this.name获取模型的文件名(不含.sql后缀),结合Jinja的replace过滤器移除文件名及后缀,直接得到文件夹路径:
select
    '{{ this.path | replace(this.name ~ ".sql", "") }}' as model_folder

补充:如果是引用其他包中的模型,this.path会包含包名前缀(例如my_package/models/staging/stg_orders.sql),若仅需包内的文件夹路径,可以对路径做进一步拆分处理。

内容的提问来源于stack exchange,提问作者bellotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:15:35