Jinja2 将关系对象列表传递给dbt_utils.union_Relation宏失败
与及 我正在使用Jinja2 将关系对象列表传递给dbt_utils.union_Relation宏失败,jinja2,dbt,Jinja2,Dbt,与及 我正在使用dbt\u utilspackage(0.5.0)中的union\u relations 我创建了我的宏,该宏使用完全限定名称列表(如数据库.schema.identifier)将其拆分,并使用api.Relations.create创建一个关系并将每个关系附加到列表中 {{list_of u relation}}被赋予了dbt_utils.union_relations(作为relations=my_宏([list of fully qualified name])),它给了我
dbt\u utils
package(0.5.0)中的union\u relations
我创建了我的宏,该宏使用完全限定名称列表(如数据库.schema.identifier
)将其拆分,并使用api.Relations.create
创建一个关系并将每个关系附加到列表中
{{list_of u relation}}
被赋予了dbt_utils.union_relations
(作为relations=my_宏([list of fully qualified name])
),它给了我一个\u is_relationship
错误,我确实使用了log
进行调试,看看它是否真的创建了一个关系,它确实创建了。可能有什么问题?听起来您的宏是这样写的:
{% macro my_macro(names) %}
{% set list_of_relations = [] %}
{% for name in names %}
{% set relation = something(name) %}
{% do list_of_relations.append(relation) %}
{% endfor %}
{{ list_of_relations }}
{% endmacro %}
您不需要使用{{list\u of_relationship}}
,而是需要{return(list\u of_relationship)}
或{%do return(list\u of_relationship)%}
。问题是,{…}
在jinja宏中将内容转换为字符串,而宏默认返回字符串
return
上的文档是。听起来您有一个宏是这样写的:
{% macro my_macro(names) %}
{% set list_of_relations = [] %}
{% for name in names %}
{% set relation = something(name) %}
{% do list_of_relations.append(relation) %}
{% endfor %}
{{ list_of_relations }}
{% endmacro %}
您不需要使用{{list\u of_relationship}}
,而是需要{return(list\u of_relationship)}
或{%do return(list\u of_relationship)%}
。问题是,{…}
在jinja宏中将内容转换为字符串,而宏默认返回字符串
return
上的文档是