我试图编写一个接受UDF的自变量,因此需要考虑使用ROW Type作为如下所示的参数类型。
@Description("test")
@ScalarFunction("test")
@SqlType(StandardTypes.ARRAY)
public static ArrayList<Integer> test(@SqlType(StandardTypes.JSON) Slice def, @SqlType(StandardTypes.ROW) RowType participatingRows) {
try {
Definition definition = JSON_CODEC.fromJson(def.getBytes());
// trying to do something similar to this
// ArrayList<String> names = participatingRows.getFieldByName("name")
// ArrayList<Double> scores = participatingRows.getFieldByName("score")
//
for(RowType.RowField rowField : participatingRows.getFields()){
// how to get the value here
// rowField.getType().getObjectValue()
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
但是我不知道如何从RowField对象中获取值。我试图按名称获取字段,字段是异构的,这意味着可以是数组,字符串或双精度型。
谢谢