如何在 pre hook 中调用宏时传递变量

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

我有一个变量,我想将它传递给宏,我在 pre_Hook 中调用宏本身

{% set v_name = 'BOS' %}

{{
    config(
      pre_hook=[ 
       "{{marcos_test(v_name)}}"
          ]
      
    )
}} 


它可以工作,但在宏本身中它看不到变量的值

如何在 pre_hook 中调用 marcos 以便它能够看到变量的值? dbt_project.yml 文件中的全局变量它们不适合,因为我需要一个动态变量

请有人帮忙

jinja2 dbt
1个回答
0
投票

实现此目的的一种方法是使用串联。您可以在 Jinja 中使用

~
符号进行串联。
请注意,您的宏很可能需要字符串作为输入,然后您需要在连接周围添加
'
引号 (
...'" ~ v_name ~ "'...
)。

{% set v_name = 'BOS' %}

{{
    config(
      pre_hook=[ 
       "{{ marcos_test('" ~ v_name ~ "') }}"
          ]
      
    )
}} 
© www.soinside.com 2019 - 2024. All rights reserved.