dbt Cloud控制台与Job执行测试结果在run_results.json中不一致
问题分析与解决建议
问题核心
在连接Fabric数据仓库的dbt Cloud项目中,执行同一dbt build命令时出现矛盾现象:
- 在dbt Cloud Studio控制台执行,
run_results.json能正确记录测试失败状态(status: "fail") - 通过dbt Cloud Job执行,实际build因测试失败终止,但
run_results.json中该测试却显示status: "success",无任何失败痕迹
可能原因及解决步骤
1. dbt版本不一致
dbt Cloud Studio和Job可能使用了不同版本的dbt,不同版本对测试结果的捕获、run_results.json的生成逻辑存在差异。
- 操作:
- 在dbt Cloud Studio右下角查看当前使用的dbt版本
- 进入Job配置页面,检查Job使用的dbt版本,确保两者完全一致
- 若版本不同,将Job的dbt版本调整为与Studio一致后重新测试
2. Job执行的重试/跳过逻辑干扰
dbt Cloud Job默认可能启用了重试机制,或测试被意外标记为跳过(虽然后台日志显示ERROR=1,但需确认执行流程)。
- 操作:
- 查看Job执行的完整日志,确认测试步骤是否被实际执行,是否存在重试后错误被掩盖的情况
- 在Job配置中关闭重试失败的任务选项,重新执行build命令,检查
run_results.json是否正确记录失败
3. run_results.json生成/上传不完整
当dbt执行失败时,Job环境可能未完整生成或上传run_results.json,导致获取到的文件是不完整的快照。
- 操作:
- 在Job执行完成后,从dbt Cloud的Artifacts页面手动下载完整的
run_results.json文件,对比之前提取的内容是否一致 - 若手动下载的文件包含正确的失败记录,检查日志提取逻辑是否存在遗漏(比如未等待Job执行完成就提取文件)
- 在Job执行完成后,从dbt Cloud的Artifacts页面手动下载完整的
4. Fabric适配器兼容性问题
由于Fabric是较新的数据仓库适配器,dbt在Studio和Job两种执行环境下与Fabric的交互逻辑可能存在差异,导致测试结果的捕获出现偏差。
- 操作:
- 尝试在Job中执行
dbt test单独测试该失败的测试用例,查看run_results.json是否能正确记录失败 - 若问题持续,可向dbt官方提交反馈,说明Fabric适配器在Job环境下的测试结果记录异常问题
- 尝试在Job中执行
内容的提问来源于stack exchange,提问作者Mavil
相关产品推荐
相关产品推荐

