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

dbt模型使用run_query宏触发编译错误,请求排查修复

dbt run_query宏编译错误解决方法

错误详情

编译错误出现在模型jira_custops(models/jira_custops.sql)中
'None'对象没有'table'属性。此问题可能因调用不存在的宏导致,请检查拼写或执行"dbt deps"安装依赖包。

引发错误的代码行:

{% set dynamic_columns = run_query(dynamic_sql_query).rows[0].sql_columns %}

可能的原因与解决步骤

  • 查询结果为空导致报错
    run_query执行dynamic_sql_query后返回了空结果,直接访问.rows[0]会触发None对象属性错误。先验证SQL语句有效性:

    1. 把dynamic_sql_query的内容打印出来,直接在数仓中执行,确认是否有返回数据
    2. 添加空值判断逻辑,避免直接访问空结果:
      {% set query_result = run_query(dynamic_sql_query) %}
      {% if query_result and query_result.rows | length > 0 %}
          {% set dynamic_columns = query_result.rows[0].sql_columns %}
      {% else %}
          {% set dynamic_columns = [] %}
      {% endif %}
      
  • run_query宏未正确加载
    run_query是dbt-core内置宏,无需额外依赖,但需确认环境兼容性:

    1. 执行dbt --version检查版本是否在1.0.0及以上(该宏在1.0+版本稳定支持)
    2. 若项目中有自定义宏覆盖了run_query,检查宏的拼写和逻辑是否正确
    3. 执行dbt clean && dbt deps清理缓存并重新安装依赖
  • 字段名错误
    确认dynamic_sql_query返回的结果中确实包含sql_columns字段,若字段名拼写错误,修改为实际返回的字段名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:45:01