news 2026/8/23 15:33:22

Great Expectations数据契约:4步给数据流水线装上质检闸

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Great Expectations数据契约:4步给数据流水线装上质检闸

Great Expectations数据契约:4步给数据流水线装上质检闸

【免费下载链接】great_expectationsAlways know what to expect from your data.项目地址: https://gitcode.com/GitHub_Trending/gr/great_expectations

凌晨3点,手机响了。下游报表的"订单金额"字段全是空值,你爬起来半小时,一路查,最后发现是上游表的金额字段从数字悄悄改成了字符串,没人通知你。这就是典型的数据契约事故。Great Expectations 是一个开源数据校验框架,让你把"数据应该长什么样"写成可执行的规则,对每一批进来的数据自动把关,出了什么问题直接指给你看。

数据契约到底在校验什么

把数据契约想成快递面单:生产者是寄件人,消费者是收件人,契约就是那张面单。面单校验什么?地址字段必须存在、电话格式必须对、重量不能是负数。数据校验也一样——字段是否存在(order_id 有值)、格式对不对(email 匹配某个正则)、取值在不在合理区间(乘客数在1到6之间)。关键在于这些规则是双方的"共同约定":生产者承诺交出来的数据合规,消费者就可以直接信任;一旦规则被违反,报错发生在寄件人那里,而不是凌晨3点的下游。

下图是一个典型的校验结果页面,每一批数据对应哪套规则、通过与否一目了然。

如果想看更完整的概念梳理,官方文档目录在 docs/。

第一次跑通校验要几步

假设你手边有一份 CSV 或者一张数据库表,最短路径是4步:

  1. 初始化项目:pip install great_expectations之后调用gx.get_context()。你会看到:项目根目录下自动生成.great_expectations/配置目录。
  2. 连接数据:本地 CSV 用context.data_sources.pandas_default.read_csv("data/orders.csv"),数据库则换对应的 SQLAlchemy 数据源。
  3. ⚠️ 写规则:建一个ExpectationSuite,往里逐条添加校验规则——这一步就是契约本身。
  4. 跑校验:batch.validate(suite)
import great_expectations as gx import great_expectations.expectations as gxe context = gx.get_context() batch = context.data_sources.pandas_default.read_csv("data/orders.csv") suite = gx.ExpectationSuite(name="orders_contract") suite.add_expectation(gxe.ExpectColumnValuesToNotBeNull(column="order_id")) suite.add_expectation( gxe.ExpectColumnValuesToBeBetween(column="amount", min_value=0, max_value=10000) ) results = batch.validate(suite) print(results.describe())

你会看到:每条规则的通过/失败状态、失败比例,外加几行失败样例数据。想深挖细节时,打开 Data Docs 页面能直接看到失败的具体行,不用再一行行捞。

你的场景适不适合用它

别因为工具流行就装,先看边界:

数据源 / 场景是否支持说明
CSV/Parquet/内存中的 Pandas支持开箱即用,上手最快
SQLAlchemy 兼容的数据库(Postgres/MySQL 等)支持覆盖主流关系库
Spark/BigQuery/Snowflake 等支持需安装对应依赖
拦截流式数据中的实时异常不支持它是批处理校验,不是流式引擎
校验自然语言内容的语义合理性不支持只校验结构、取值和格式规则

一句话判断:如果你的数据是批量产出的、规则可以用"非空、区间、格式、唯一性"描述,它就是对的工具;如果想拦流式数据或校验内容的"含义",先看看别的方案。具体校验逻辑在 great_expectations/validator/ 模块里,可以进去看看每条规则是怎么执行的。

跑通之后下一步做什么

第一次校验跑通后,最有价值的一件事是把这步挂进 CI 或定时任务——规则失败时自动阻断流程,数据契约才算真正开始干活。顺手再跑一次 Data Docs 生成,所有校验结果会变成一个可浏览的静态站点,不看代码的同事也能直接看到"数据哪里不对劲":

具体怎么挂进流水线,参考 great_expectations/checkpoint/ 模块里的 Checkpoint 机制即可。

【免费下载链接】great_expectationsAlways know what to expect from your data.项目地址: https://gitcode.com/GitHub_Trending/gr/great_expectations

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 15:31:41

libheif未来发展方向解析:AVIF标准演进与6大新技术支持

libheif未来发展方向解析:AVIF标准演进与6大新技术支持 【免费下载链接】libheif libheif is an HEIF and AVIF file format decoder and encoder. 项目地址: https://gitcode.com/gh_mirrors/li/libheif libheif 是 HEIF 与 AVIF 图像格式的开源解码器与编码…

作者头像 李华