Я пытаюсь написать пользовательский 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.Я пытаюсь получить поля по имени, поля неоднородны, то есть один может быть массивом или строкой или двойным.
Спасибо