将 Relation 对象列表传递给 dbt_utils.union_relation 宏失败

rba*_*ala 1 jinja2 dbt

与dbtjinja2相关

我正在使用union_relationsdbt_utils(0.5.0)。

我创建了我的宏,它采用完全限定名称列表(例如database.schema.identifier)将其拆分并使用api.Relations.create (链接)创建关系并将每个关系附加到列表中。

{{ list_of_relation }}被赋予dbt_utils.union_relations(as relations=my_macro([list of fully qualified names])),它给了我一个_is_relation错误,我确实用来log调试并查看它是否确实创建了一个关系,而且确实如此。可能出什么问题了?

小智 5

听起来你有一个这样写的宏:

\n
{% macro my_macro(names) %}\n  {% set list_of_relations = [] %}\n  {% for name in names %}\n    {% set relation = something(name) %}\n    {% do list_of_relations.append(relation) %}\n  {% endfor %}\n  {{ list_of_relations }}\n{% endmacro %}\n
Run Code Online (Sandbox Code Playgroud)\n

{{ list_of_relation }}您\xe2\x80\x99 将需要{{ return(list_of_relation) }}或 ,而不是使用{% do return(list_of_relation) %}。问题在于,{{ ... }}将 jinja 宏中的内容转换为字符串,而宏默认返回字符串。

\n

有关的文档return这里

\n