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

使用dbt Jinja获取Select查询结果时遇语法错误求助

解决方案
  • 核心问题:你把statement/load_result这类Jinja控制流写到了普通表模型文件里,dbt的表模型只允许返回单一SELECT语句来生成表,不支持这类宏调用逻辑。报错行号是dbt渲染Jinja为最终SQL后的行号,不是你原文件的行号,所以才会出现行号不匹配的情况。

  • 正确处理方式:

    1. 若要处理查询结果,把这段逻辑放到dbt宏文件中(macros目录下的.sql文件),示例代码:
    {% macro get_energy_dataset() %}
      {%- call statement('all', fetch_result=True) -%}
        select * from {{ source("energy_sellers", "energy") }}
      {%- endcall -%}
      {%- set all_data = load_result('all') -%}
      {{ return(all_data) }}
    {% endmacro %}
    

    之后可以在其他模型或dbt命令中调用这个宏来获取结果。
    2. 如果你只是要基于这个source创建表模型,直接保留select * from {{ source("energy_sellers", "energy") }}即可,不需要用statement和load_result。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:17:44