在使用大数据流批一体化技术加工处理数据时,经常需要过滤掉一些无效或者垃圾数据,本文简单介绍 bboss 流批一体化数据加工处理时记录过滤功能的使用方法。
1. bboss 过滤记录方法
bboss 通过接口 DataRefactor 来加工处理数据
package org.frameworkset.tran;
import org.frameworkset.tran.context.Context;
/** * <p>Description: 数据加工处理接口</p> * <p></p> * <p>Copyright (c) 2018</p> * @Date 2018/9/4 9:19 * @author biaoping.yin * @version 1.0 */public interface DataRefactor { /** * 数据加工处理方法 * @param context 包含需要加工数据记录的上下文对象 * @return */ public void refactor(Context context) throws Exception;}
复制代码
数据加工处理方法 refactor 接收 Context 类型参数,对应需要加工处理的数据记录的上下文对象,Context 提供获取、修改、添加、删除记录字段的一系列数据处理方法,也包含过滤数据记录的方法 setDrop:
/** * 设置是否过滤掉记录,true过滤,false 不过滤(默认值) * @param drop */ void setDrop(boolean drop);
复制代码
接下来介绍数据过滤方法的使用案例。
2. 记录过滤案例
数据过滤方法的使用非常简单,示例如下:
过滤入网号码为空非法号卡订单
//设置源数据加工操作,指标分析之前执行 importBuilder.setDataRefactor(new DataRefactor() { @Override public void refactor(Context context) throws Exception { String new_number = context.getStringValue(CARD_FIELD.NEW_NUMBER.name()); //过滤掉入网号码为空非法号卡订单 if (null == new_number){ context.setDrop(true);//将当前记录标记为丢弃状态,以便过滤记录 return ; //过滤记录无需进行后续的加工处理,直接返回结束记录的后续加工处理 } //加工和处理数据 Object value = context.getValue(CARD_FIELD.CHNL_COUNTY.name()); if (null == value){ context.addFieldValue(CARD_FIELD.CHNL_COUNTY.name(), "未知"); } } });
复制代码
记录过滤说明:
通过调用 context.setDrop (true) 方法,将当前记录标记为丢弃状态,以便过滤记录
通常将记录过滤处理逻辑放置到 refactor 方法的开头,避免对需要过滤的记录做一些不必要的处理,以提升数据加工处理效率
过滤记录无需进行后续的加工处理,直接返回结束记录的加工处理
3. 参考资料
【1. 数据采集 ETL 工具使用指南】
https://esdoc.bbossgroups.com/#/db-es-tool
【2. 数据采集 & 流批一体化处理使用指南】
https://esdoc.bbossgroups.com/#/etl-metrics
【3. 数据采集 & 流批一体化处理插件介绍】
https://esdoc.bbossgroups.com/#/datatran-plugins
【4. 数据采集 & 流批一体化处理使用案例】
https://esdoc.bbossgroups.com/#/bboss-datasyn-demo
评论