agentleFS
shisuidatashisuidata/ss-data-skills/skills/data-quality-rule-generator/SKILL.md

data-quality-rule-generator

Skill8 starsChanged 5 days agoMITView on GitHub

Use when generating data quality rules from a table schema, SQL, metric definition, or data pipeline description. Produces validation rules for freshness, row count, uniqueness, nulls, enums, ranges, referential integrity, metric fluctuation, reconciliation, and SQL checks. 中文触发词:数据质量规则、质量校验、DQC、校验 SQL、上线验收。

The file

Files
SKILL.md

Data Quality Rule Generator

目标

根据表结构、SQL、指标定义或任务说明,生成可落地的数据质量规则。

这个 Skill 关注质量规则设计,不负责替代调度平台、质量平台或监控系统。默认输出通用 SQL 校验规则,脚本可以同时生成 dbt schema.yml 和 Great Expectations 1.x 规则集。DataWorks、DolphinScheduler 等平台按 SQL 规则改写。

使用场景

使用这个 Skill,当用户需要:

  • 给一张新表配置质量校验
  • 给核心指标增加监控规则
  • 给数据任务上线前补充验收标准
  • 为补数、重刷、口径变更设计校验 SQL
  • 为 ODS、DWD、DWS、ADS 层表设计不同强度的质量规则
  • 从 SQL 或表结构中推导非空、唯一、枚举、范围、波动等规则

典型输入:

请根据这张订单汇总表设计数据质量规则。
这段 SQL 每天产出渠道转化率,请帮我生成上线前校验项。

不适用场景

不要用这个 Skill 直接完成:

  • 模糊需求澄清,请使用 data-requirement-clarifier
  • 指标口径审查,请使用 metric-definition-reviewer
  • 表结构设计,请使用 table-design-advisor
  • SQL 逻辑审查,请使用 sql-reviewer

如果表粒度、主键或指标口径不明确,必须先列为待确认问题,再给出基于假设的规则。

输入信息

最少输入之一:

  • 表结构
  • SQL
  • 指标定义
  • 数据任务说明
  • eda.py 的体检结果

可选输入:

  • 表粒度
  • 主键或唯一键
  • 分区字段
  • 更新频率
  • 数据延迟要求
  • 上游表
  • 下游指标
  • 历史波动范围
  • 质量平台类型
  • 告警接收人或处理机制

上下文建议

推荐使用 表设计上下文模板 或 SQL 审查上下文模板。

最有价值的上下文是:表粒度、主键、分区字段、更新频率、SLA、核心指标和历史波动范围。缺少历史波动时,可以给出默认监控思路,但阈值必须标记为假设。

规则类型

优先从这些维度生成规则:

  1. 产出及时性与新鲜度:分区是否按时产出,最新事件时间是否满足 SLA。
  2. 数据量:行数是否为 0,日环比或周同比是否异常。
  3. 唯一性:主键、业务键、分区内唯一键是否重复。
  4. 非空:关键维度、主键、金额、状态、时间字段是否为空。
  5. 枚举值:状态、渠道、类型字段是否在合法集合内。
  6. 数值范围:金额、次数、比例、时长是否落在合理范围内。
  7. 逻辑一致性:开始时间小于结束时间,支付金额不小于 0,分子不大于分母。
  8. 关联完整性:事实表外键是否能关联到维表。
  9. 指标波动:核心指标是否出现异常升降。
  10. 上下游对账:汇总表与明细表、源表与目标表是否一致。

可用脚本

有表结构或体检结果时,用脚本生成规则:

python3 scripts/dq_rules.py generate --schema table.json --sql rules.sql --dbt schema.yml --ge suite.json
python3 scripts/dq_rules.py generate --eda eda.json --table orders --partition dt --sql rules.sql

表结构格式见 表结构格式,示例见 assets/example_schema.json,全部参数见 命令行参数。

assumptions 里的规则依据是假设,比如阈值不是用户给的,或者规则来自样本体检。把它们列进“设计假设”,上线前确认。

输出格式

## 数据质量规则设计

### 1. 规则设计结论

### 2. 设计假设

### 3. 规则清单

| 规则编号 | 规则类型 | 检查对象 | 规则描述 | 严重级别 | 触发动作 |
| --- | --- | --- | --- | --- | --- |

### 4. SQL 校验示例

```sql
-- rule_xxx
```

### 5. 分层处理建议

| 严重级别 | 处理方式 |
| --- | --- |
| 阻断 | 任务失败或禁止发布 |
| 告警 | 通知负责人处理 |
| 观察 | 记录趋势,暂不拦截 |

### 6. 待确认问题

### 7. 上线前验收清单

严重级别

  • 阻断:会导致核心指标错误、主键重复、关键分区缺失或下游不可用
  • 告警:数据可能异常,需要人工确认
  • 观察:短期不阻断,但建议持续追踪

SQL 规则写法

默认用返回异常行数的方式表达:

select count(*) as invalid_count
from target_table
where dt = '${bizdate}'
  and critical_field is null;

如果规则需要判断波动,默认用近 7 天或近 30 天作为参考窗口,但必须标记为可调整假设。唯一性、波动和对账的 SQL 写法见 表结构格式。

质量标准

输出必须:

  • 先确认表粒度和关键字段
  • 按阻断、告警、观察区分规则强度
  • 给出能落地的 SQL 示例
  • 不虚构历史阈值,把阈值假设写清楚
  • 覆盖产出、唯一、非空、枚举、范围、波动和对账中的关键项

完成后的下一步

  • 把规则和 SLA 写进文档:data-doc-writer
  • 规则暴露了线上错误:data-incident-postmortem-writer
  • 规则涉及的 SQL 需要修改:sql-reviewer

示例 Prompt

请用 data-quality-rule-generator 为下面这张表生成质量规则:

表:ads_channel_new_user_conversion_d
粒度:dt + channel_id
分区:dt
字段:dt, channel_id, register_user_cnt, first_purchase_user_cnt, conversion_rate
更新:每天 T+1 08:00 前产出
请用 data-quality-rule-generator 为下面这张 SaaS 订阅快照表设计质量规则:

表:dws_saas_subscription_snapshot_m
粒度:month + company_id
字段:month, company_id, plan, mrr_amount, start_date, end_date, status, seats
更新:每月 1 日 8 点产出上月数据
下游:NRR 指标计算、续费预测模型、CSM 风险看板
SLA:下游 NRR 指标在月初 10 点前必须就绪

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.