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

dbt在Databricks创建外部表时CSV列映射异常问题及解决方案

遇到的问题

我是dbt新手,正在Databricks中通过外部表创建表,已在raw/source.yaml中完成如下定义:

- name: table_1
  freshness:
    warn_after: {count: 12, period: hour}
    error_after: {count: 24, period: hour}
  external:
    location: "{{'s3://datahub-' + env_var('environment') + '-raw/table_1/'}}"
    using: csv
    infer_schema: true
    partitions:
      - name: timestamp
        data_type: integer
  columns:
    - name: col_1
      data_type: string
    - name: col_2
      data_type: string
    - name: col_n
      data_type: string

操作背景

CSV文件包含的列数多于YAML中定义的列,执行命令:

dbt run-operation stage_external_sources --args "{select: raw.table_1}" --vars "ext_full_refresh: true"

创建表后,不需要的列的数据填充到了我定义的列中。我曾尝试通过infer_schema强制匹配schema,但不确定它是否仅作用于数据类型,也不清楚如何让数据适配YAML中定义的schema,希望得到解决方法。

解决方案

CSV文件的列顺序必须与定义一致。

  • 指定所有列名及数据类型
  • CSV需匹配列顺序,其他格式需匹配列名
  • 部分数据库支持schema自动推断

内容的提问来源于stack exchange,提问作者Akvárium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:10:53