如何为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
相关产品推荐
相关产品推荐

