与dbt。如何在 yaml 文件中使用 jinja 宏

问题描述 投票:0回答:1

我有一个像这样的yaml文件:

models:
       - name: test_view
        description: "test"
        config:
          meta:
            database_tags:
              ACCOUNT_OBJECTS.TAGS.ENV: DEV`


我正在尝试在该环境中自动将“DEV”更改为“PROD”。我有一个从 Targets.name 获取变量的宏

这是 jinja 代码:

{% macro test_macro(target) %}
      {%- if  target.name == "dev" -%} DEV
      {%- elif target.name == "prod"  -%} PROD
      {%- else -%} invalid
      {%- endif -%}
    {% endmacro %}`

但是,当我尝试使用宏时,我得到“test_macro 未定义”

例如。 ACCOUNT_OBJECTS.TAGS.ENV:{{ test_macro(目标)}}

是不是yaml文件中还不能使用自定义宏?

macos yaml jinja2 dbt
1个回答
4
投票

宏主要用于模板化 DBT 从其模型编译的 SQL 查询。 YAML 文件用于配置;它们本身不是模型,也不支持自定义宏。

我去寻找,有一个积极的讨论关于未来是否可以支持这一点,但截至 2022 年底这是不可能的。

您是否考虑过在模型中使用配置块来设置这些元数据?

© www.soinside.com 2019 - 2024. All rights reserved.