如何在dbt宏中使用变量

  • 本文关键字:变量 dbt dbt
  • 更新时间 :
  • 英文 :


我试图在宏中使用dbt运行命令中传递的变量。如何使用

{% set override_schema_name = vars('override_schema_name') %}

{%- set default_schema = target.schema -%}
{%- if custom_schema_name is none -%}
{{ default_schema }}
{%- else -%}
{{ default_schema }}_{{  override_schema_name| trim }}
{%- endif -%}
{%- endmacro %} 

在这个例子中,我运行dbt run——vars '{"override_schema_name":"someschema"}',但是这会抛出变量未定义的错误。

您的代码中有一些错误:

  1. 访问变量值的宏名称是var,不是vars。所以第一行应该是{% set override_schema_name = var('override_schema_name') %}

  2. 您应该在project.yml文件中声明任何变量,然后在宏或项目中的其他地方使用它们:

name: my_dbt_project
version: 1.0.0
config-version: 2
# Define variables here
vars:
override_schema_name: something

或者,您可以在宏中为var调用提供默认值:

{% set override_schema_name = var('override_schema_name', target.schema) %}

完成这些更改后,您的dbt run命令应该可以工作了。

vardocs: https://docs.getdbt.com/reference/dbt-jinja-functions/var"使用Variables"导游:https://docs.getdbt.com/docs/building-a-dbt-project/building-models/using-variables

最新更新