执行dbt docs generate报错:无法获取列大小写信息
排查模型与源定义细节
虽然你已经检查过大小写,但再仔细核对所有模型文件、schema.yml和sources.yml,确认没有任何地方硬编码了ServiceOrganisationCode这个大写列名——包括查询语句、字段引用甚至注释里的内容。确保源表的列定义完全匹配Starburst Galaxy中的小写列名。刷新Starburst Galaxy元数据缓存
Starburst的元数据可能存在缓存,导致dbt读取到旧的列信息。在Galaxy控制台找到对应catalog和schema,执行元数据刷新操作(比如右键目录选择「Refresh Metadata」),之后再重新运行dbt docs generate。调整dbt配置的大小写敏感性
检查profiles.yml中Trino/Starburst的配置项,若存在case_sensitive_columns参数,将其设为false,避免dbt对列名大小写严格匹配。同时在dbt_project.yml中确认quoting配置:quoting: database: false schema: false identifier: false确保
identifier为false,防止dbt给列名添加引号引发大小写敏感问题。在Starburst中直接验证元数据
登录Starburst查询编辑器,执行以下语句确认表的列信息:DESCRIBE TABLE ga_ds_datamart_qa.<你的schema>.<你的表名>;或者通过信息_schema查询:
SELECT column_name FROM information_schema.columns WHERE table_catalog = 'ga_ds_datamart_qa' AND table_schema = '<你的schema>' AND table_name = '<你的表名>';确认返回的列名均为小写,排查是否存在残留的旧列元数据。
彻底清理dbt缓存
除了dbt clear,手动删除target目录和dbt_packages目录,再重新执行dbt deps和dbt docs generate,确保没有残留的旧缓存文件干扰。
内容的提问来源于stack exchange,提问作者Kevin Manders

