You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dbt脚本及Jinja循环中调用dbt_project.yml的字典变量?

dbt嵌套变量调用及循环遍历的正确方式

单个嵌套变量调用失败的解决方法

你在dbt_project.yml中定义的变量配置(注意:dbt的变量块应为vars:而非var:,可能是笔误):

vars:
  event:
    event_1: 
      start_date: 1
      end_date: 2 
    event_2:
      start_date: 1
      end_date: 2 

你之前用{{ var("event['event_1']['start_date']") }}调用失败,原因是var()函数的参数只能是顶层变量名,不能直接传入嵌套路径。正确调用方式是先通过var("event")获取整个字典,再用键访问嵌套值:

# 方式1:方括号语法
{{ var("event")['event_1']['start_date'] }}

# 方式2:点语法(键名不含特殊字符时可用)
{{ var("event").event_1.start_date }}

循环遍历嵌套变量的正确写法

你之前的循环代码无效,问题有两个:一是变量名写错(你定义的是event而非event_variables),二是.e会静态访问名为e的键,而非循环变量e的动态值。正确代码如下:

{% set events = ["event_1", "event_2"] %}
{% for e in events %}
  {{ var("event")[e].start_date }}
{% endfor %}

代码说明:

  • var("event")先拿到顶层的event字典
  • 循环中用[e]动态访问字典里对应event_1、event_2的子字典
  • 最后通过.start_date取出对应日期值

内容的提问来源于stack exchange,提问作者Skylar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:29:58