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

DBT源标识符能否以数字开头?Snowflake SQL编译报错排查

问题解决:DBT引用数字开头的Snowflake表标识符

核心问题

你在模型代码调用source函数时,第二个参数未用单引号包裹,导致DBT错误解析表名,生成的SQL无法正确识别Snowflake中以数字开头的表标识符,最终触发编译错误。

修正步骤

1. 修正Staging模型代码

将原代码:

with unioned_archived_history_logs as (
    select * from {{ source('emspdb_archive', s_2020_09_history_logs) }}
)

修改为:

with unioned_archived_history_logs as (
    select * from {{ source('emspdb_archive', 's_2020_09_history_logs') }}
)

关键是给第二个参数s_2020_09_history_logs加上单引号——它是你在_sources.yml中定义的表name字段值,必须以字符串形式传递给source函数。

2. 保留现有_sources.yml配置

你的_sources.yml配置是正确的:identifier字段用双引号包裹"2020_09_history_logs",这会让DBT自动生成带双引号的SQL,符合Snowflake对数字开头标识符的要求:

- name: emspdb_archive
    database: lake
    schema: emspdb_archiveschema
    tables:
      - name: s_2020_09_history_logs
        identifier: "2020_09_history_logs"

错误原因说明

  • 未加单引号时,DBT会将s_2020_09_history_logs视为变量而非字符串,解析后生成的SQL出现.2020这类非法格式,触发Snowflake的编译错误。
  • Snowflake要求以数字开头的标识符必须用双引号包裹,你的配置已经满足这一要求,只需确保模型中正确调用source函数即可生成合法SQL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:42:34