捞一下自己,在线等大佬们的回复 _(:з」∠)_
在 2021-02-20 13:14:18,"xiaoyue" <18242988...@163.com> 写道:
我在使用flinksql1.11的udaf时出现SqlValidatorException: No match found for function
signature prod(),请求大佬帮忙看看_(:з」∠)_
以下是代码:
-
...
stableEnv.createTemporarySystemFunction("prod",
ProductAggregateFunction.class);
Table resultTable = stableEnv.sqlQuery("select pf_id,prod(yldrate+1)-1 as
yldrate from queryData group by pf_id");
...
-
@FunctionHint(
input = @DataTypeHint("Double"),
output = @DataTypeHint("Double")
)
public class ProductAggregateFunction extends AggregateFunction {
@Override
public Double getValue(Product acc) {
return acc.prod;
}
@Override
public Product createAccumulator() {
return new Product();
}
public void accumulate(Product acc, Double iValue) {
acc.prod *= iValue;
}
public void retract(Product acc, Double iValue) {
acc.prod /= iValue;
}
public void merge(Product acc, Iterable it) {
for (Product p : it) {
accumulate(acc, p.prod);
}
}
public void resetAccumulator(Product acc) {
acc.prod = 1D;
}
}