1、主要是计算某个字段值里面的标记值,比如某个字符串有多少个逗号
package udf;
import com.aliyun.odps.udf.UDF;
public class MarkCount extends UDF{
public Long evaluate(String text,String sub){
int count =0, start =0;
while((start=text.indexOf(sub,start))>=0){
start += sub.length();
count ++;
}
return new Long(count);
}
}
2、这个主要解决ab值,目前ab值都是用的一个大字符串记录的,一般大家判断的时候用的都是用like,但是如果有ab值冲突了,就会有问题,比如a=1,a=11,这样like '%a=1%'就会有问题,写自定义函数能精准匹配
package udf;
import com.aliyun.odps.udf.UDF;
public class AbEqual extends UDF {
public Long evaluate(String sourceAb, String condition){
if (sourceAb == null || sourceAb.length() ==0 || condition == null || condition.length() ==0){
return new Long(0);
}
String trimCondition = condition.trim();
for (String part : sourceAb.split(";")) {
if (part.trim().equalsIgnoreCase(trimCondition)){
return new Long(1);
}
}
return new Long(0);
}
}