SuperAPI AI 工具集

dbt-schema-verify

通用与其它

查看项目

更新于 10-16 06:46

技能介绍

用途:该技能用于校验 dbt 模型的列结构是否与 schema.yml / models.yml 中声明的列契约一致。在创建新 dbt 模型、修改已有模型、把 CTE 重构为中间模型、重命名或调整列顺序、更改会重建表的物化配置,以及任务涉及指定列输出或 AUTO* 等值/存在性测试时,都应调用。

主要能力:运行 altimate-dbt schema-verify --model <name> 后返回结构化 JSON,包含 model、verdict、expected_columns、actual_columns,以及 columns_extra、columns_missing、columns_reordered、type_mismatches 四类差异。verdict 为 match 表示列完全匹配(列名不区分大小写);mismatch 表示存在差异;no-spec 表示模型在 schema.yml 中未声明列,无需校验。

使用方式与修复:按差异逐项修正模型 SQL——多余的列从 SELECT 移除,缺失的列补进 SELECT 或按同义名重命名,顺序不一致的调整 SELECT 列顺序,类型不符则用 CAST 或修改上游来源。修完后重新运行 altimate-dbt build --model <name>,再运行 schema-verify,直到 verdict 为 match。注意 build --model 成功后会自动运行 schema-verify,并在 schema_verify 字段中给出结果。任务涉及 N 个模型时,需对全部 N 个模型逐一校验,而不是只查最后一个。

限制:判定以命令输出为准,不能靠自行检查列来确认完成;build 通过不代表列结构正确;规范即契约,不应为迁就模型而重新解释规范。该技能只校验列结构,不覆盖值的正确性、行数变化以及 check_* 等自定义测试。若环境中没有 altimate-dbt(which altimate-dbt 无返回),可手动比对声明列与物化表列,命令包括 dbt show --select <name> --limit 0,并自行产出同样的四类差异。具体安装与配置方式资料未提供。