如何在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
相关产品推荐
相关产品推荐

