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

如何在DBT Jinja宏中正确向ref函数传递模型名称?

正确传递模型名称给DBT ref函数的方法

你的宏代码问题在于ref函数内部嵌套了多余的Jinja模板标签,在Jinja的表达式上下文(也就是{{ }}内部)里,直接引用变量名即可,不需要再用{{ }}包裹。

修正后的宏代码:

{% macro count_all_macro(model) %}
SELECT count(*) FROM {{ ref(model) }}
{% endmacro %}

解释:

  • ref()函数在DBT中接受一个字符串参数(模型名称),当你在宏里通过参数model传递模型名时,直接把变量model传给ref()就可以了,外层的{{ }}已经会解析这个变量的值。
  • 原代码里的{{ ref({{ model }}) }}属于嵌套模板标签,不符合Jinja的语法规则,会导致解析错误。

使用示例:

在你的模型文件中调用这个宏时,直接传入模型名称字符串即可:

{{ count_all_macro('my_dbt_model') }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:54:32