用途:排查 dbt 项目中的故障,包括模型编译或构建失败、测试失败、模型产出错误数据、构建变慢或超时,以及用户直接贴出 dbt 报错时的定位。不适用于新建模型(用 dbt-develop)、加测试(用 dbt-test)、分析变更影响(用 dbt-analyze)。
诊断流程:先做健康检查,运行 altimate-dbt doctor 与 altimate-dbt info,环境异常先修(如未装 dbt-core 用 pip install dbt-core,缺包先跑 dbt deps)。再按症状分类错误:编译错误、运行时数据库错误、测试失败、数据不正确。随后隔离问题,用 altimate-dbt compile --model <name> 只编译以捕获 Jinja 错误,成功后再 build;用 altimate-dbt execute --query "..." --limit N 直接探查数据。在碰数据库前可先做离线 SQL 分析:altimate_core_semantics 查语义问题(错误连接、笛卡尔积、NULL 比较),altimate_core_column_lineage 追溯列血缘定位错误数据来源,altimate_core_correct 做多轮迭代修正。快速修复可用 altimate_core_fix(按模式模糊匹配表名列名,适合编译错误)和 sql_fix(按数据库报错定位根因,适合运行时错误)。
数据错误定位:需实际探查数据,检查 NULL 数量、指标取值范围、关键列取值分布、与上游表的行数对比。常见根因包括连接类型错误导致丢行、一对多连接造成行数膨胀、日期 spine 导致输出每日变化。上游排查:运行 altimate-dbt parents --model <name>,读取并单独构建父模型,查询父表数据而非想当然认为正确。修复后运行 altimate-dbt build --model <name> --downstream,并用数据查询验证,不能只以构建成功判定正确。
限制与规则:不得在未理解失败原因前修改测试使其通过;需修复全部错误而非仅报告的那一个,不能把错误推为已有或超范围;不要只治标,应追溯上游根因;注意警告常会演变为错误。所需工具包括 bash、read、glob、edit 及上述 altimate_core_* 与 sql_fix。具体收费与平台细节暂未提供。