
数据质量验证先于业务感知Great Expectations 把数据规则写进管道【免费下载链接】great_expectationsAlways know what to expect from your data.项目地址: https://gitcode.com/GitHub_Trending/gr/great_expectations凌晨三点告警群跳出一条消息下游报表里出现了负数的乘客人数。查了半天上游管道每一环都显示执行成功。问题出在数据本身变了但没有任何环节负责说不对这不像数据。如果你的数据管道从来没做过体检你敢直接信它的输出吗Great Expectations 就是负责喊不对的那个环节——它把数据规则写成可执行的期望跑一遍就能告诉你哪里不符合。一句话定位把数据规则写成期望并自动验证坏数据在管道里就被拦住。一条规则拦住 9999 行之外的脏数据场景一张出租车订单 CSV运营口径是每单乘客数必须在 1 到 6 之间但没人盯着。做法把 DataFrame 挂到临时 Data Source 上写一条范围期望直接对当前这批数据Batch跑验证。下面这段脚本从建上下文到打印验证结果一次跑完import great_expectations as gx import pandas as pd context gx.get_context() data_source context.data_sources.add_pandas(pandas) data_asset data_source.add_dataframe_asset(trips) batch_definition data_asset.add_batch_definition_whole_dataframe(batch) batch batch_definition.get_batch(batch_parameters{dataframe: pd.read_csv(trips.csv)}) result batch.validate(gx.expectations.ExpectColumnValuesToBeBetween( columnpassenger_count, min_value1, max_value6)) print(result[success], result[result][unexpected_count])跑完你会看到True 0即 10000 行里没有任何一行的乘客数越界这份输出里同时带着每行的实际计数、意外行数、意外占比全量统计而不是抽样猜测。规则跑完报告长什么样场景验证通过了很好但团队里有人不写代码他们要能自己打开一份数据报告看看每列规则的状态。做法把散落的规则收进 Expectation Suite再交给 Checkpoint 统一调度。Checkpoint 拿到数据批次和期望套件的组合后产出 Validation Result并可以触发 Action比如生成 Data Docs 或发通知。注册一个 Checkpoint 的写法很直白checkpoint context.add_checkpoint( nametrips_check, validations[{ batch_request: {datasource_name: pandas, data_asset_name: trips}, expectation_suite_name: trips_suite, }], ) checkpoint.run()你会得到一个 Checkpoint 运行结果对象。再执行gx docs build生成静态 Data Docs浏览器打开后每列规则一行passenger_count那行标红写着1579 个意外值占比 15.79%采样意外值是 0.0另一列pickup_datetime打绿勾100% 非空。不用任何人去解释今天的数据怎么样。从能验证到每天自动验证场景规则只在有人手动跑 notebook 时才生效等于没有。做法Checkpoint 就是为这个设计的——规则、要验证的批次、失败后触发哪些动作打包成一个可反复运行的单元。它接收 Batch Request 和 Expectation Suite 的配对交给 Validator 执行产出 Validation Result最后交给 Action 列表发邮件、发 Slack、构建 Data Docs或者任意你用 Python 写的动作。踩坑与反直觉的设计老教程里的PandasDataset接口在新版里已经移除现在的数据接入是 Data Source Data Asset Batch Definition 三层组合拿着 0.x 时代的代码去跑新版环境会直接 ImportError升级时建议对照 docs/docusaurus/docs/core/introduction/try_gx_exploratory.py 这个官方示例脚本重写。另一个反直觉点Checkpoint 在验证失败时默认不会抛异常炸掉你的流程而是把结果交给你处理。这意味着失败即阻断不是默认行为你需要显式配置 Checkpoint 的失败动作反之想只告警不阻断也靠同一处配置。这个设计把坏了怎么办的决策权留给了写管道的人。去把第一条规则挂到你的日常数据上用pip install great_expectations加上一张 CSV 就能起步。项目仓库great_expectations【免费下载链接】great_expectationsAlways know what to expect from your data.项目地址: https://gitcode.com/GitHub_Trending/gr/great_expectations创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考