1、Great Expectations 初探:什么是数据校验?为什么需要自动化?GE 的核心价值与生态定位

1.1 数据校验到底在解决什么问题?

先聊聊数据校验这件事。说白了,就是回答一个问题:“我手里的这批数据,到底能不能用?”

你想想看,数据从采集到落地,中间要经过多少环节?业务系统写错字段、上游接口突然改了格式、ETL 脚本漏掉一条规则……任何一个环节出问题,下游的分析报表、机器学习模型、甚至线上决策系统,都可能跟着翻车。

我刚开始做数据工程师那几年,就吃过这种亏。有一次凌晨跑完批处理,第二天业务方反馈说“用户活跃度突然暴跌 80%”。查了半天,发现是上游日志里某个枚举字段新增了一个值,ETL 没做兼容处理,直接把整行数据过滤掉了。嗯,从那以后,我再也不敢轻视数据校验了。

数据校验的核心任务,其实就是三件事:

  • 完整性——该有的字段有没有?记录数够不够?
  • 准确性——数值范围对不对?格式是否符合预期?
  • 一致性——不同表之间的关联字段能否对上?历史趋势有没有突变?

一句话总结:数据校验不是锦上添花,而是数据工程的“安全带”。没有它,你永远不知道下一秒会摔得多惨。

1.2 为什么需要自动化校验?

手动校验行不行?当然行。小项目、一次性分析,你写几个 SQL 查一查,肉眼扫一遍,也能凑合。

但一旦数据量上来、管道变多、迭代变快,手动校验就彻底撑不住了。我见过不少团队的做法是:每次上线前,数据负责人跑一遍 SQL 脚本,把结果贴到群里,@所有人 说“我看了,没问题”。

这其实很危险。为什么?

  • 人眼会疲劳——看 100 条记录还行,看 1000 万条,你根本看不出异常。
  • 覆盖不全——手动检查通常只覆盖核心字段,边缘情况很容易漏掉。
  • 无法回溯——出了问题,你很难说清楚“这个异常是今天才出现的,还是上周就有了”。
  • 效率太低——每次部署都要人工跑一遍,团队大了根本跑不过来。

自动化的价值就在这里。它把校验规则变成代码,每次数据流转都自动执行检查,结果可追溯、可报警、可可视化。说白了,就是让机器替你盯着数据,你只需要关注那些真正需要人工判断的异常。

我的经验:自动化校验不是要取代人的判断,而是把人的精力从“重复劳动”中解放出来,聚焦在“异常分析”和“规则优化”上。

1.3 Great Expectations 是什么?

Great Expectations(简称 GE)是目前数据工程领域最流行的开源数据校验框架。它不是一个简单的“数据质量检查工具”,而是一套完整的数据校验生态。

我个人习惯把它理解为“数据领域的单元测试框架”。你写过 pytest 吧?写几个断言,跑一下,绿了就是通过,红了就是失败。GE 做的事情类似,只不过它断言的对象是数据——DataFrame、数据库表、文件里的记录。

GE 的核心概念其实不多,就这几个:

概念 说明 类比
Expectation 一条校验规则,比如“字段 age 不能为 null” 类似 pytest 里的 assert
Expectation Suite 一组 Expectation 的集合,针对某个数据资产 类似测试用例集
Batch 一批待校验的数据(可以是 DataFrame、SQL 查询结果等) 类似测试输入
Checkpoint 执行校验的入口,把 Suite 和 Batch 关联起来 类似测试运行器
Data Docs 自动生成的校验报告,HTML 格式,可分享 类似测试报告

你看,这套概念体系跟软件测试几乎一一对应。如果你有单元测试的经验,上手 GE 会非常顺畅。

1.4 GE 的核心价值

GE 能火起来,不是因为它能“检查数据”,而是因为它解决了几个实实在在的痛点:

  1. 规则可复用——写好的 Expectation Suite 可以跨项目、跨团队共享,不用每次从头写 SQL。
  2. 结果可追溯——每次校验的结果都会记录,你可以随时回溯“上周三的数据质量怎么样”。
  3. 报告自动化——Data Docs 自动生成,非技术人员也能看懂数据质量状况。
  4. 与管道集成——GE 可以嵌入 Airflow、Prefect、dbt 等调度工具,在数据流转过程中自动触发校验。
  5. 社区生态丰富——官方提供了 100+ 内置 Expectation,覆盖常见的数据质量场景。

注意:GE 不是银弹。它擅长的是“结构化的、规则明确的”数据校验。对于非结构化数据、或者需要复杂业务逻辑判断的场景,GE 可能不是最佳选择。选型时一定要结合自己的实际场景。

1.5 GE 在数据工程生态中的定位

GE 不是孤立存在的。它跟数据工程里的其他工具配合得很好。我画了一张图,帮你理清 GE 在整个数据管道中的位置:

Great Expectations 在数据管道中的定位 Great Expectations 在数据管道中的定位 数据源 ETL 处理 数据仓库 下游消费 Great Expectations 校验 Expectation Suite + Checkpoint Data Docs 校验报告 校验时机 • 数据入库前 • ETL 处理后 • 下游消费前 • 定时巡检

从这张图你可以看到,GE 可以嵌入到数据管道的多个环节:

  • 数据入库前——校验原始数据是否符合预期格式,避免“垃圾进”。
  • ETL 处理后——验证转换逻辑是否正确,字段值是否在合理范围内。
  • 数据仓库中——定期巡检,发现数据退化或异常波动。
  • 下游消费前——确保报表、模型使用的数据是可靠的。

跟其他工具配合时,GE 通常扮演“质检员”的角色。比如:

  • dbt + GE:dbt 负责数据建模和转换,GE 负责在模型构建完成后自动校验数据质量。
  • Airflow + GE:在 DAG 中插入 GE Checkpoint 任务,实现数据管道的自动化质量门禁。
  • Kafka + GE:对流式数据进行实时或微批校验,确保消息质量。

我的建议:刚开始接触 GE 时,不要试图一次性覆盖所有数据。选一个核心表、写 5-10 条最关键的 Expectation,跑通流程,再逐步扩展。小步快跑,比大而全更靠谱。

1.6 本章小结

这一章我们聊了数据校验的本质、自动化的必要性,以及 Great Expectations 的核心概念和生态定位。你不需要记住所有细节,但希望你能理解:

  • 数据校验不是可选项,而是数据工程的必需品。
  • 自动化校验能帮你从重复劳动中解脱出来,聚焦在真正有价值的事情上。
  • GE 提供了一套完整的、可复用的数据校验框架,跟现有数据生态能很好地融合。