基于原始表udftest写的 udf 函数对应的 sql 为:
select
user_name ,ye_ji_zhi_0,
ROUND(SPM_COMM_VALUE(1, ‘’,udftest.ti_dian_bi_li_0 , 0 , udftest.ye_ji_zhi_0), 2) tc
from
udftest
group by
user_name,ye_ji_zhi_0 。 希望返回的是udftest.ti_dian_bi_li_0 * udftest.ye_ji_zhi_0 的结果。但是有的字段匹配到了,有的字段压根没匹配上所以结果为 0, 不知道什么情况,这些数据看起来没什么区别。为了描述问题,我简化了数据,本来是基于多行匹配的,多行匹配也错乱,每个记录只有一行还是不对。
返回结果:
【StarRocks版本】例如:3.1
JAVA 代码:
public static class State {
Double result = 0d;
public int serializeLength(){ return 16;}
}
public State create() {
return new State();
}
public void destroy(State state) {
}
public final void update(State state, Integer type, String range, Double rat, String amount, Double value) {
if (type ==1) {
state.result=value*rat;
}else
//…
}
public void serialize(State state, java.nio.ByteBuffer buff) {
Double dou=state.result;
if(dou!=null) buff.putDouble(dou);
}
public void merge(State state, java.nio.ByteBuffer buffer) {
Double val = buffer.getDouble();
if(val!=null&&val!=0)
{
state.result = val;
}
}
public Double finalize(State state) {
return state.result;
}
}