Great Expectations 验证结果中的指标计算原理解析
在使用Great Expectations进行数据验证时,理解验证结果中的各项指标对于正确解读数据质量至关重要。本文将深入解析exception_values_to_be_in_set期望类型返回结果中的关键指标计算逻辑,帮助数据工程师和数据分析师准确理解数据验证结果。
核心指标解析
Great Expectations在验证列值是否属于指定集合时,会返回多个关键指标:
- element_count:总行数,即被验证列的总记录数
- unexpected_count:不符合预期的非空值数量
- missing_count:空值或缺失值的数量
- unexpected_percent:与unexpected_percent_nonmissing相同
- unexpected_percent_nonmissing:非空值中不符合预期的百分比
- unexpected_percent_total:所有行中不符合预期的百分比
指标计算原理
unexpected_percent_nonmissing 计算
这个指标表示在非空值中不符合预期的比例,计算公式为:
unexpected_percent_nonmissing = (unexpected_count / (element_count - missing_count)) × 100
例如在用户案例中:
- unexpected_count = 211,608
- element_count = 921,750
- missing_count = 600,924
计算过程:
非空值总数 = 921,750 - 600,924 = 320,826
unexpected_percent_nonmissing = (211,608 / 320,826) × 100 ≈ 65.96%
这个指标反映了在实际有值的记录中,不符合预期的比例有多高。
unexpected_percent_total 计算
这个指标表示在所有记录中不符合预期的比例,计算公式为:
unexpected_percent_total = (unexpected_count / element_count) × 100
同样以用户案例数据计算:
unexpected_percent_total = (211,608 / 921,750) × 100 ≈ 22.96%
这个指标反映了在整个数据集(包括空值)中,不符合预期的记录所占比例。
常见误解澄清
-
分母选择错误:在计算unexpected_percent_nonmissing时,容易错误地使用总行数作为分母,实际上应该使用非空行数作为分母。
-
指标混淆:unexpected_percent和unexpected_percent_nonmissing实际上是相同的指标,而unexpected_percent_total则是不同的计算方式。
-
空值处理:需要注意unexpected_count仅统计非空值中不符合预期的数量,空值单独计入missing_count。
实际应用建议
-
结合使用两个百分比指标:同时观察unexpected_percent_nonmissing和unexpected_percent_total可以全面了解数据质量问题。前者反映现有数据的准确率,后者反映整体数据的合规率。
-
设置合理的阈值:根据业务需求,可以针对这两个指标分别设置不同的告警阈值。例如,对数据完整性要求高的场景可能更关注unexpected_percent_total。
-
结果可视化:将这两个指标随时间的变化趋势可视化,可以帮助发现数据质量的变化模式。
理解这些指标的计算原理和实际含义,将帮助数据团队更准确地评估数据质量,并做出合理的决策。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0148- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111