在使用大数据流批一体化技术加工处理数据时,经常需要过滤掉一些无效或者垃圾数据,本文简单介绍 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
评论