如何在great_expectations仪表板显示校验失败的完整数据行
Data Docs校验失败时展示完整异常行配置方案
include_unexpected_rows配置后不生效,核心是参数配置位置、结果存储规则、文档渲染规则三个环节没配全,按下面步骤操作即可:
1. 单条Expectation显式开启参数
该参数不是全局生效配置,必须在每一条需要展示完整异常行的Expectation规则内单独添加,配置在Checkpoint、数据源层不会生效,配置示例:
# 以expect_column_max_to_be_between规则为例 expectation_config = ExpectationConfiguration( expectation_type="expect_column_max_to_be_between", kwargs={ "column": "你的数值校验列名", "max_value": 阈值, "include_unexpected_rows": True # 必须放在当前expectation的kwargs参数中 } )
版本提示:0.15.x之前的旧版本对该参数存在兼容bug,配置后不会返回完整行数据,建议升级到0.15.40及以上稳定版本操作。
2. 调整校验结果存储规则
默认配置下GE存储校验结果时只会保留异常值、校验统计量这类摘要信息,会自动过滤完整行内容,需要修改项目根目录下的great_expectations.yml,添加全局结果格式配置:
# 在validations_store配置块同级添加以下内容 validation_result_format: result_format: COMPLETE include_unexpected_rows: True return_unexpected_index_query: True
result_format必须设置为COMPLETE,如果设为默认的BASIC/SUMMARY等级,就算开了行保留参数,存储结果时也会把完整行字段删掉。
3. 开启Data Docs的异常行渲染模块
如果前两步配置完,生成的数据文档还是看不到完整行,是因为默认的文档渲染模板默认隐藏了异常行表格,需要做简单的自定义配置:
- 在项目
plugins目录下新建自定义渲染脚本,读取校验结果中的unexpected_rows字段,渲染为包含所有列的HTML表格 - 在
great_expectations.yml的data_docs_sites配置块中注册自定义渲染模块:
data_docs_sites: local_site: class_name: SiteBuilder store_backend: class_name: TupleFilesystemStoreBackend base_directory: uncommitted/data_docs/local_site/ custom_render_module: plugins.custom_data_docs.renderer # 替换为你自己的自定义渲染脚本路径
临时排查方案
如果不想调整渲染模板,需要快速定位异常行对应的ID及其他字段内容,可以直接打开项目下uncommitted/validations/路径下对应校验批次的JSON结果文件,搜索unexpected_rows字段,就能拿到所有触发校验失败的完整行数据,不需要通过unexpected_index_list回表关联查询。
内容的提问来源于stack exchange,提问作者aprospero
相关产品推荐
相关产品推荐

