泛型设计
S:原始数据类型(如 Map<Integer, String> 表示行数据)T:清洗后数据类型,必须实现 Cleaned 接口接口方法
init(String funcRegx, FileInfo sheet):初始化清洗器clean(S source, Integer lineNo):清洗单条记录prepare(List<String> pre):预处理/准备工作after(T t):后置处理finish():完成处理init(String funcRegx, FileInfo sheet)功能:初始化清洗器,配置清洗规则、正则表达式、字段映射等信息
参数:
funcRegx:清洗函数和正则表达式配置sheet:当前工作表信息,包含模板 ID、字段配置等实现要点:
clean(S source, Integer lineNo)功能:清洗单条记录,对原始数据进行验证、转换、格式化等清洗操作
参数:
source:原始记录lineNo:行号,用于错误定位返回值:
CleanResult<T>:清洗结果,包含清洗后的数据和有效性标识实现要点:
prepare(List<String> pre)功能:预处理/准备工作,在批量清洗前执行,可用于加载缓存、初始化字典等
参数:
pre:预处理数据列表(通常是表头信息)实现要点:
after(T t)功能:后置处理,每条记录清洗成功后调用,可用于收集统计信息、建立索引等
参数:
t:清洗后的数据对象实现要点:
finish()功能:完成处理,所有数据清洗完成后调用,用于资源释放、批量写入等操作
实现要点:
CleanResult<T>核心组件:
data:清洗后的数据对象error:错误信息对象valid:数据有效性标识使用方式:
result.isValid() 返回 true,result.getData() 获取清洗后的数据result.isValid() 返回 false,result.getError() 获取错误信息以 CallDataCleaner 为例:
funcRegx 配置,初始化字段映射[原始数据] → [init()初始化] → [prepare()准备] → [clean()清洗] → [after()后置处理] → [finish()完成]
↓ ↓
[解析表头信息] [数据验证和转换]
↓
[生成CleanResult]
↓
[有效数据/错误信息]
接口设计增强:
性能优化:
错误处理增强:
扩展性增强:
监控增强:
结构化数据清洗:
半结构化数据清洗:
复杂业务规则处理:
数据质量控制: