dbt seed配置语法报错:类型不符,预期为Seed configs
解决dbt seeds配置的语法错误问题
核心错误分析
你的配置存在3个关键语法问题,导致系统提示"类型不符,预期为'Seed configs'":
- 全局配置(
schema/database)被错误地写成了列表项(- schema: ...),dbt要求全局配置直接用+前缀定义在seeds根节点下 - 各个seed的配置没有嵌套在项目名称对应的块内,dbt的seed配置结构要求项目级配置包裹具体seed的设置
orders和payments的columns节点缩进错误,应该和config同级,而非嵌套在config内部;另外payments的columns字段写错了,要匹配seed文件的实际字段
修正后的配置示例
假设你的dbt项目名称是jaffle_shop,正确的seeds配置如下:
seeds: # 全局默认配置,所有seed都会继承 +database: raw +schema: jaffle_shop # 项目级seed配置,嵌套在项目名称下 jaffle_shop: customers: config: enabled: true column_types: id: integer first_name: varchar(50) last_name: varchar(50) # columns和config同级 columns: - name: id tests: - not_null - unique - name: first_name - name: last_name orders: config: enabled: true column_types: id: integer user_id: integer order_date: date status: varchar(100) columns: - name: id tests: - not_null - unique - name: user_id - name: order_date - name: status payments: config: enabled: true column_types: id: integer order_id: integer payment_method: varchar(100) amount: integer columns: - name: id tests: - not_null - unique - name: order_id - name: payment_method - name: amount
关键说明
- 全局配置的
+database和+schema不需要加列表符号(-),+前缀表示这是一个"全局默认"配置,会应用到所有未单独指定的seed - 所有具体seed(
customers/orders/payments)必须嵌套在你的项目名称(jaffle_shop)的块下,这是dbt配置的标准结构 - 修正
payments的columns字段,匹配seed文件的实际字段(去掉错误的user_id/order_date/status,添加正确的order_id/payment_method/amount) - dbt Power User插件的报错是因为配置结构不符合dbt的Schema规范,修正结构后插件就能正常识别
内容的提问来源于stack exchange,提问作者Imad
相关产品推荐
相关产品推荐

