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

如何为dbt Seeds列指定特定数据类型?配置YML后Snowflake未生效

解决dbt Seed到Snowflake时数据类型指定不生效的问题

1. 强制重建种子表

dbt seed默认对已存在的表执行merge增量更新,不会修改原有表结构。如果之前已创建带错误数据类型的表,需强制重建:

  • 执行命令时添加--full-refresh参数:
dbt seed --profiles-dir .dbt_profiles --target dev --select samples_test --full-refresh

该参数会删除原表并重新创建,确保YML中指定的数据类型生效。

2. 校验种子YML配置的正确性

确保seeds目录下的YML文件(如samples_test.yml)语法正确,列类型符合Snowflake格式:

version: 2

seeds:
  - name: samples_test
    columns:
      - name: column_name
        data_type: varchar(255)
      # 其他列配置...

注意:

  • YML文件需与CSV文件同名,或通过配置明确对应关系
  • 直接使用Snowflake原生数据类型(如varchar(255)),避免兼容性问题

3. 排除CSV内容的干扰(可选)

若CSV中column_name列全为纯数字,dbt自动类型识别可能优先判定为数值型,但只要YML明确指定类型,重建表时会覆盖该结果。若仍有异常,可临时在CSV对应列加入非数值测试值(如开头加字母),执行--full-refresh后再替换回真实数据。

4. 验证最终表结构

执行seed命令后,在Snowflake中查询表结构确认:

DESCRIBE TABLE samples_test;

检查column_name列的数据类型是否为VARCHAR(255)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:32:03