如何在Pointblank中实现行数量范围校验而非精确匹配?
pointblank实现DataFrame行数范围校验
问题背景
使用pointblank的row_count_match()仅能校验DataFrame行数是否等于固定值,无法直接实现行数大于/小于某个阈值或行数介于两个值之间的校验需求。
解决方案
可以通过pointblank的custom_fn()函数自定义校验逻辑,实现行数范围的校验。以下是具体实现示例:
1. 校验行数大于10000行
import pointblank as pb ( pb.Validate(data=pb.load_dataset(dataset="small_table"), label="行数校验示例") .custom_fn( fn=lambda df: len(df) > 10_000, label="行数需大于10000行" ) .interrogate() )
2. 校验行数介于20000到100000行之间
import pointblank as pb ( pb.Validate(data=pb.load_dataset(dataset="small_table"), label="行数校验示例") .custom_fn( fn=lambda df: 20_000 <= len(df) <= 100_000, label="行数需介于20000到100000行之间" ) .interrogate() )
3. 同时添加多个行数校验规则
若需同时校验多个条件,可链式调用多个custom_fn():
import pointblank as pb ( pb.Validate(data=pb.load_dataset(dataset="small_table"), label="多行数规则校验") .custom_fn( fn=lambda df: len(df) > 10_000, label="行数大于10000行" ) .custom_fn( fn=lambda df: 20_000 <= len(df) <= 100_000, label="行数介于20000到100000行之间" ) .interrogate() )
说明
custom_fn()接收一个lambda函数(或自定义函数),函数参数为待校验的DataFrame,返回布尔值表示校验是否通过。- 通过
label参数可为每个校验规则添加描述,便于在interrogate()生成的报告中识别规则含义。
内容的提问来源于stack exchange,提问作者Adrien Pacifico
相关产品推荐
相关产品推荐

