mcpField
A
analyze-data-quality

analyze-data-quality

github.com/openai数据与数据库560108 次安装4 周前更新
代码仓库

关于 analyze-data-quality

Analyze Data Quality 是一项技能,用于评估数据集是否适合分析、建模、仪表板、实验或数据管道。它根据数据形态和用途选择检查,并将证据关联到风险、原因及可行修复方案。

主要功能

  1. 01分析数据集结构与粒度
  2. 02检查完整性、有效性和完整度
  3. 03分析时间与分布变化
  4. 04按严重程度排列发现
  5. 05建议修复方案和自动化测试
  6. 06保留 SQL 与笔记本证据

适用场景

  1. 01建模前评估数据集
  2. 02调查空值率突然上升
  3. 03检查连接覆盖率和重复键
  4. 04准备面向利益相关者的质量发现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openai/role-specific-plugins --skill analyze-data-quality

安装后在 Claude Code 中输入/analyze-data-quality确认已加载。

附带文件agents/openai.yaml

详细介绍

相关技能

如果工作是定义或重新设计 KPI 框架、指标定义、护栏或目标,而不是检查现有数据是否可信,请使用 $design-kpis。

如果工作是对分析、图表、报告或建议进行 QA,而不是调查底层数据,请使用 $validate-data。

分析数据质量

评估数据集是否足够可信,可用于分析、建模、仪表板、实验或下游管道。从预期用途和数据粒度入手,根据数据形态运行最有价值的检查,并报告具体证据、分析风险、可能原因,以及最小且有用的修复方案或自动化测试。

工作流

  1. 明确质量问题和运行背景。

    确定数据集代表什么、预期分析单位、下游用途、用户关注的是原始采集质量、转换后模型的质量,还是两者都关注;并明确比较基准,例如前几周的数据、先前的架构或可信的参考表。识别预期数据粒度、主键或候选键、重要日期列、时区假设、领域规则、允许值和业务阈值。如果缺少背景信息,请谨慎推断并标明假设。

  2. 选择可检查的分析路径。

    如果检查需要 SQL 或 Python,默认使用配套笔记本,让用户能够检查结果背后的确切代码。如果需要专用笔记本脚手架或重构工作流,请使用 $jupyter-notebooks。对于可查询的表,先通过相关源连接器使用 ~~structured_data 确认架构、数据粒度、样例行和查询规则,再进行更深入的检查。如果新鲜度和数据血缘检查很重要,请使用 ~~operations_logs。

  3. 创建精简的数据概况。

    从行数、列数、列名和类型、候选键、可能标识符上的重复率、相关日期列的最小和最大时间戳、空值率、可能分类列的不同值数量,以及度量列的基本数值摘要开始。在解读异常前确认数据粒度;许多表面上的质量问题其实源于混合粒度、部分回填、延迟到达的数据或重复联接。

  4. 运行核心质量检查。

    选择与数据集和任务相符的检查。默认对完整性、唯一性、有效性、一致性、关联完整性、时效性、数据量和形态中最相关的方面进行检查。比较比率,而不只是数量;如果有助于区分真实问题和预期变化,请按时间、来源、国家/地区、平台、模型版本或其他关键维度进行细分。

  5. 运行针对数据形态的检查。

    根据数据形态调整检查内容:

    • 事件数据:重复的事件 ID、未来的事件时间戳、会话或用户覆盖范围缺失,以及发布后事件构成的骤变。
    • 维度表:不唯一的业务键、无对应记录的代理键、没有相应时间戳却发生的状态变化,以及参考值出现意外变动。
    • 事实表:混合粒度、不可能的度量值(例如负收入或负数量)、维度联接导致的数据膨胀,以及延迟到达或部分加载的分区。
    • ML 特征或评分表:由结果产生后字段造成的数据泄漏、特征稀疏度激增、模型或特征存储发生变更后的范围偏移,以及类别标签漂移。
    • 实验数据:重复分组、变体比例失衡超出预期、分组前已有曝光,以及分组时间戳之前发生的事件。
  6. 如果存在历史数据,运行时间和分布检查。

    如果用户提到“某日期之后”“突然”“最近”或“才刚开始出现”,请优先进行时间诊断。检查首次出现日期、最后出现日期、每日或每周空值率趋势、重复率趋势、行数趋势、类别占比变化、分布漂移,以及发布、迁移、事件、模型变更或回填前后的变更点。

  7. 调查分析风险及可能原因。

    将每个问题与下游风险关联起来:可信分析失效、决策偏差、连接失效、仪表板数据过时、实验结果不正确、信息泄露、 模型特征不可靠或细分结果误导。尽可能明确问题是否仅限于某个来源、细分群体、分区、时间范围、 发布版本、迁移、回填或上游流水线变更。

  8. 建议修复方案或自动化测试。

    建议一组尽可能精简的后续修复、监控或自动化测试,以实质性降低风险。仅在规则稳定且值得维护时才建议自动化。如果代码产生了调查结果,请附上或保存笔记本/查询路径。

标准

核心检查
  • 完整性:按列计算空值率;按分区、细分群体和时间段计算空值率;检查意外的空字符串或哨兵值;检查必需列的填充率。
  • 唯一性:检查完全重复的行、重复的主键、重复的复合键,以及电子邮件地址或设备 ID 等半唯一字段的唯一比例。
  • 有效性:检查转换类型后的类型一致性;检查 ID、电子邮件地址、URL、枚举值、国家/地区代码和时间戳的格式;检查度量值、百分比、计数和日期的范围;检查受控词表中的允许值。
  • 一致性:检查跨字段规则、单位或货币一致性、状态与时间戳是否匹配,以及来自不同来源的重复字段是否一致。
  • 完整性:检查父子键覆盖率、孤立记录、意外的多对多连接,以及失效的缓慢变化维度连接。
  • 时效性:检查从源事件时间到加载时间的延迟、从加载时间到报告时间的延迟、缺失的近期分区,以及无法解释的历史重写或回填。
  • 体量与结构:检查行数变化、不同值计数变化、分布变化、主要类别的总量占比变化,以及新增或消失的类别。
特定检查指南
  • 重复项与键:检查完全重复项、主键重复项、预期粒度下的复合键重复项,以及由空格、大小写、格式或延迟更新导致的近似重复项。报告数量、受影响行的占比、重复的键,以及重复是否仅限于某个时间范围、来源或细分群体。
  • 缺失值:区分可接受的稀疏性与完整性问题。检查空值率随时间的变化、架构或流水线变更后新出现空值的列,以及 ''、'unknown'、'n/a'、0 或 -1 等哨兵值。
  • 域有效性:检查格式错误的标识符、国家/地区代码、时间戳、不可能的值、不在允许集合内的值,以及跨字段矛盾,例如 is_cancelled = false 但 cancelled_at 非空。
  • 连接覆盖率:涉及多个数据集时,检查无法匹配父表的外键、意外的一对多扩增、连接维度表或实验表时的覆盖率损失,以及连接前后的行数。
  • 新鲜度与架构漂移:检查行数相对于近期历史记录的变化、重要日期列的延迟、列的新增/删除/类型变更,以及可能表明上游变更的稀疏度或基数变化。
  • 离群值与分布偏移:优先使用分位数、MAD 或 IQR 等稳健方法,再考虑使用 z 分数。检查均值、中位数、方差、零值率、类别占比和长尾特征的突然变化。
  • 数据泄露、回填与时间穿越:检查在本应尚不存在时就已填充的特征、未来日期的记录、迟到数据导致近期分区不稳定的情况,以及未作标注却改变历史计数的回填。
严重程度
  • 严重:破坏可信分析、核心关联、生产仪表板或关键决策,例如粒度重复、缺少主键或生产数据过时。
  • 高:显著影响下游决策,例如大量空值激增、核心维度中的类别漂移、无效业务规则值、数据泄漏或严重的关联覆盖率损失。
  • 中:局部或可解释的问题,但仍需记录、监控或由负责人跟进。
  • 低:外观不一致、预期的稀疏性,或已知的边缘情况,不会实质影响当前用途。

不要在不加解读的情况下直接倾倒原始分析输出。将每项发现与分析风险及可能的影响联系起来。

自动化测试指南
  • 适合自动化的候选项:主键唯一性、必需列的非空检查、稳定枚举值的有效值检查、引用完整性、新鲜度阈值,以及考虑季节性的行数或数据量范围。
  • 对波动较大的产品指标使用硬编码分布阈值、在实体解析较复杂的场景中强制唯一性,以及在数据通常会延迟到达时检查近期分区,都应谨慎。
  • 仅当预期规则稳定、重要且易于维护时,才建议添加自动化测试。
输出标准

对于面向利益相关方的数据质量工作,默认将完成的发现交给 $build-report,以便运行时生成 MCP 应用或 HTML 报告。除非用户明确要求快速的内联答复或其他主要交付物,否则不要只提供分析输出、笔记本或聊天中的发现。以下结构定义了报告内容。

请按以下结构组织回复:

  1. 数据集和粒度摘要
  2. 已执行的检查
  3. 发现
  4. 时间或趋势异常
  5. 可能原因及受影响的用途
  6. 建议的修复或自动化测试
  7. 假设和待解问题

对于每项发现,请包括:

  • 未通过的检查
  • 证据:计数、比率、细分维度和日期
  • 重要性
  • 严重程度和置信度
  • 已知时的可能原因
  • 建议的修复措施或自动化测试

如果使用了代码,请附上或保存一个包含关键 SQL 和 Python 检查的笔记本,并确保笔记本路径易于查找。

默认做法
  • 优先使用小型、高信号表格,而不是详尽罗列。
  • 比较比率,而不只是计数。
  • 尽可能按时间和关键细分维度拆分检查。
  • 在判断重复项或不同计数激增前,先规范化字符串。
  • 数据可能延迟到达时,谨慎处理近期分区。
  • 指出异常是否可能由合法的产品发布、实验、迁移、事件、模型变更或回填导致。
  • 保留可供检查的证据:SQL、查询链接、笔记本路径、源路径、样本行、图表输出和计算说明。

评论

支持 Markdown