用途:把报表的SQL变成可版本化、可审计的独立产物。契约保证所有消费者运行同一份经审阅的查询定义、同样的声明参数与执行身份;但它不冻结数据或语义层,因此只携带freshness watermark与分块执行元数据,trust: certified仅表示“所有者审阅过的确定性SQL”,属审阅状态而非认证。
适用场景:用户需要可信/已认证/固定查询支撑报表;同一组数字需出现在技能、定时脚本、应用等多处;报表数字变化却无人能解释;需要校验、审阅或版本化报表契约。
不适用:创建指标视图(用 databricks-metric-views)、创建或调优Genie Agent、构建仪表盘、脚手架或部署应用、生成报表技能,以及只跑一次的一次性查询。
主要结构:reports/<name>/ 下含 report.yaml、queries/、可选的 metric-views/definitions.json。每个块一个只读 SELECT/WITH,全限定命名,参数在文件内以 -- @param 声明。按块决定执行身份:<key>.sql 以应用服务主体运行并使用共享缓存;<key>.obo.sql 代表登录用户运行并使用按用户缓存;涉及行过滤或列掩码的块必须用 .obo.sql。
使用方式:加载父技能 databricks-core 处理CLI认证与profile选择,必须显式传 --profile <name>。可用 databricks experimental aitools tools query --profile <PROFILE> --warehouse <WH> "SHOW VIEWS IN main.finance" 等命令确认指标视图(DDL含 WITH METRICS LANGUAGE YAML)。用 python3 "${CLAUDE_SKILL_DIR}/scripts/validate_contract.py" reports/<name> 校验,退出码0有效、1错误、2无法运行。执行时用JSON编码器构造请求,走 /api/2.0/sql/statements/,轮询至终态并跟随 next_chunk_internal_link 直至缺失。只记录证据(语句id、列schema、行数、水印、契约版本),不提交结果行。
限制与已知失败模式:LIMIT需ORDER BY;行上限参数须为INT而非BIGINT;不可 ORDER BY MEASURE(...);禁止字符串插值,关系名需 IDENTIFIER(:param)(契约不允许);依赖身份的SQL不可用共享缓存;无头运行时文件名不强制身份,需用 SELECT current_user() 证明;指标视图可被 CREATE OR REPLACE 重定义,须在report.yaml固定所有者并把定义变更视为大版本升级;max_rows非成本控制;可选过滤避免哨兵值;Genie输出不算认证;不可声称全报表统一as-of时间;关系须全限定;DECIMAL与BIGINT以字符串返回,需在边缘转换。其他字段细节与移植性见 references 文档。