我在dbt项目的macros/文件夹中的一个文件中覆盖了ref宏。
{%- macro ref(table_name) -%}
{% set relation = builtins.ref(table_name) %}
{% do return(relation) %}
{%- endmacro -%}
字符串
当我尝试使用dbt run --models xxx运行任何模型时,会导致以下错误:
Encountered an error:
keyword argument repeated: tags (<template>, line 12)
型
如果我删除该文件,那么dbt模型将按预期运行。
我希望这个宏返回dbt关系对象,就像原始dbt源函数一样。
也尝试过重写源宏,结果相同:
{%- macro source(source_name, table_name) -%}
{% set rel = builtins.source(source_name, table_name) %}
{{ rel }}
{%- endmacro -%}
型
和
{%- macro source(source_name, table_name) -%}
{% set rel = builtins.source(source_name, table_name) %}
{% do return(rel) %}
{%- endmacro -%}
型
我在这里看到过类似的用法--重写源函数--这正是我要做的:https://medium.com/checkout-com-techblog/dbt-modeling-at-scale-2614202bb5d0
运行:
dbt-core==1.6.6
dbt-refshift==1.6.2
Python 3.9.13
型
我已经检查了类似的问题,但这些都没有回答我上面的问题,例如:Overriding source macro in DBT to allow for dynamic sources for test runs
提前感谢任何线索/建议!
2条答案
按热度按时间7d7tgy0s1#
覆盖宏通常需要使用适配器调度配置,我假设同样适用于覆盖ref函数。
例如,
字符串
查看更多https://docs.getdbt.com/reference/dbt-jinja-functions/dispatch
希望这能帮上一点忙!
sshcrbum2#
以防万一有人得到类似的错误,在其中一个dbt模型的配置中,'tags'参数被定义了两次,这导致了错误。